- 公開日:2017-1-11
- プロナビTOP / プログラミング初心者向け技術系ノウハウ・まとめ

PHPでは、文字列を操作するためにとても便利な関数が用意されています。
たとえば、指定した文字列から一部の文字を取得したいときは、substr関数や、mb_substr関数、文字列を指定した文字列で分割するexplode関数などがあります。
今回は、これらの3つの関数の使い方と使用例について紹介します。
目次
substr関数とは
説明
substrとは、指定した文字列から、一部の文字列を取得する関数です。
たとえば、「taro@ezweb.ne.jp」という文字列データを使用してみましょう。
この場合、先頭文字「t」の位置は0番目から始まることにご注意ください。
substr(‘ taro@ezweb.ne.jp ‘,0,4)のように指定して実行すると、文字列「taro」が、戻り値として返されます。
書式
1 |
substr (引数1、引数2、引数3) |
引数1:文字列(string)
引数2:開始文字位置(int) 0からの開始となります。
引数3:取得したい文字数(int) バイト数で指定します。
戻り値
指定した位置の文字列
[使用例]
それでは、実際にsubstr関数を使用して、簡単なプログラムを作成してみましょう。
” taro@ezweb.ne.jp “という文字列から文字の位置とバイト数を指定して、文字を取得します。
サンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $str1 = 'taro@ezweb.ne.jp'; $substr1 = substr($str1, 0, 4); $substr2 = substr($str1, 5, 5); $substr3 = substr($str1, 5); $substr4 = substr($str1, -2, 2); $substr5 = substr($str1, -5); echo '<p>','文字列:',$str1,' の0番目から4バイトを取得すると ',$substr1,'</p>'; echo '<p>','文字列:',$str1,' の5番目から5バイトを取得すると ',$substr2,'</p>'; echo '<p>','文字列:',$str1,' の5番目から最後までを取得すると ',$substr3,'</p>'; echo '<p>','文字列:',$str1,' の末尾2番目から2バイトを取得すると ',$substr4,'</p>'; echo '<p>','文字列:',$str1,' の末尾5番目から最後までを取得すると ',$substr5,'</p>'; ?> |
実行結果
文字列:taro@ezweb.ne.jp の5番目から5バイトを取得すると ezweb
文字列:taro@ezweb.ne.jp の5番目から最後までを取得すると ezweb.ne.jp
文字列:taro@ezweb.ne.jp の末尾2番目から2バイトを取得すると jp
文字列:taro@ezweb.ne.jp の末尾5番目から最後までを取得すると ne.jp
mb_substr関数とは
substr関数と基本的には同じ処理を行うのですが、バイト数ではなく文字数を指定して、文字を取得することが可能です。
全角の文字列を取得する場合に、substr関数を使用してバイト数を指定すると、実行結果に文字化けが生じるようです。全角をあつかうような文字列操作では、mb_substr関数を使用することをお奨めします。
説明
substrとは、指定した文字列から、一部の文字列を取得する関数です。
たとえば、「あけましておめでとうございます。」という文字列データを使用してみましょう。
この場合、文字が全角であることにご注意ください。
mb_substr(‘あけましておめでとうございます。’,0,5)のように指定して実行すると、文字列「あけまして」が、戻り値として返されます。
書式
1 |
mb_substr (引数1、引数2、引数3) |
引数1:文字列(string)
引数2:開始文字位置(int) 0からの開始となります。
引数3:取得したい文字数(int) 文字数で指定します。
戻り値
指定した位置の文字列
[使用例]
それでは、実際にmb_substr関数を使用して、簡単なプログラムを作成してみましょう。
サンプルプログラム
1 2 3 4 5 6 7 |
<?php $str2 = 'あけましておめでとうございます。'; $str4 = mb_substr($str2, 0, 5); $str5 = mb_substr($str2, 5, 5); echo '<p>','文字列「',$str2,'」の最初から5文字取得すると「',$str4,'」','</p>'; echo '<p>','文字列「',$str2,'」の5番目から5文字取得すると「',$str5,'」','</p>'; ?> |
実行結果
文字列「あけましておめでとうございます。」の5番目から5文字取得すると「おめでとう」
explode関数とは
explode関数とは、文字列を指定した文字列で分割する関数です。
たとえば、
のような文字列データを考えて見ましょう。
explode関数を使って、文字列”、”で分割すると、4つのくだものの名前に分けることができます。
分割された文字列は、戻り値として返される配列の各要素として格納されます。
array [0]= ”apple”
array [1]= ”orange”
array [2]= ”lemon”
array [3]= ”banana”
書式
1 |
explode(引数1、引数2、引数3) |
説明
引数1:区切り文字(separator)
引数2:文字列(string)
引数3:戻り値として返す、配列の最大要素数
戻り値
分割した文字列が格納された各配列
使用例
それでは、実際にexplode関数を使用して、簡単なプログラムを作成してみましょう。
”apple,orange,lemon,banana”という名前が記載された文字列を、区切り文字” , ” (カンマ)で分割します。
サンプルプログラム
1 2 3 4 5 6 7 8 9 |
<?php $fruits = "apple,orange,lemon,banana"; $fruit = explode(",",$fruits); echo '<p>','文字列「',$fruits,'」','を","で分割します。','</p>'; echo '<p>',$fruit[0],'</p>'; echo '<p>',$fruit[1],'</p>'; echo '<p>',$fruit[2],'</p>'; echo '<p>',$fruit[3],'</p>'; ?> |
実行結果
apple
orange
lemon
banana
おわりに<
いかがでしたでしょうか。文字列を操作する関数では、全角文字や半角カナが含まれるケースがあるので注意が必要ですね。そのような場合は、mb_substr関数のように文字数そのもので扱うことが出来る関数を使用したほうがよさそうです。
いろいろなケースが考えられるので、ぜひ一度、試してみてください。