「PHP」split関数を使わずに文字列を分割する方法について
PHPで文字列を分割したい時は、以前までは「split関数」を使用しておりました。
しかし、「split関数」は PHP5.3で非推奨となり、PHP7.0で完全に削除されました。
では「split関数」の代わりに何を使うのかというと、「explode関数」、または「preg_split関数」を使用します。
当記事ではそれぞれの関数の使い方や意味などについてご紹介いたします。
split関数とは
split関数とは、文字列を何らかの文字で区切り、配列として返してくれる関数です。
PHPの公式マニュアルには現在以下のような警告が出ています。
警告
この関数は PHP 5.3.0 で 非推奨 となり、 PHP 7.0.0 で 削除 されました。
この関数の代替として、これらが使えます。
・preg_split()
・explode()
・str_split()
split関数が削除されたことにより、「split関数」を使用していたプログラムがエラーになるといった事態もあったようです。
今後も「split関数」は使用しないようにしましょう。
explode関数
「explode関数」は、対象の文字列を文字列によって分割し、配列として値を返してくれる関数です。
基本的な記述の仕方は以下の通りです。
explode ("分割文字", 分割したい文字列 ,最大要素数)
これだけではよくわからないと思われますので、以下で具体的な例を挙げて解説していきます。
//文字列
$str = "A/B/C/D";
//explode関数で文字列を分割
$split = explode("/", $str,2);
//結果を出力
print_r($split);
出力結果
Array
(
[0] => A
[1] => B/C/D
)
ひとつずつ解説していきます。
まず、explode関数のひとつめの引数である、「"/"」では、「/」で文字列を分割するということを指示しています。
次に2つめの引数である、「$str」では、分割したい文字列を指定します。
ここでは文字列を格納した変数が入っていますが
explode("/", "A/B/C/D", 2);
このように直接文字列を入力することも可能です。この場合でも先ほどの出力結果に変わりはありません。
次に3つめの引数である「2」ですが、これは、配列として返した際の要素数を指定しています。
今回は2を指定したので、「A」と「B/C/D」のように2つに分割されました。
ちなみに3つめの引数は省略することができまして
$str = "A/B/C/D";
$split = explode("/", $str);
print_r($split);
このように記述すると
Array
(
[0] => A
[1] => B
[2] => C
[3] => D
)
このように「"/"」が出現した地点すべてが分割され配列として返ります。
preg_split関数
「preg_split関数」も文字列を分割するための関数ですが、explode関数と違う点は、「正規表現」を使用することができる、という点です。
以下で具体例を見てみましょう。
$str = "A,B,C,D"
$split = preg_split("/[,]/", $str);
print_r($split);
出力結果
Array
(
[0] => A
[1] => B
[2] => C
[3] => D
)
文字列を分割するという役割自体はexplode関数と変わりませんが、explode関数では分割文字列を1つしか指定できないのに対し、preg_split関数では、「/[,-]/」のように複数の分割文字列を指定することができます。
$str = "A,B-C-D,E,F-G"
$split = preg_split("/[,-]/", $str);
print_r($split);
出力結果
Array
(
[0] => A
[1] => B
[2] => C
[3] => D
[4] => E
[5] => F
[6] => G
)
str_split関数
最後に「str_split関数」ですが、これは文字列を指定した数字で分割します。
$str = "ABCDEFGHI";
$split = str_ssplit($str,3);
print_r($split);
出力結果
Array
(
[0] => ABC
[1] => DEF
[2] => GHI
)
str_split関数では、第1引数には文字列を、第2引数には何文字で区切るかを指定します。
この際、第2引数を省略すると、1文字ずつ文字列が区切られます。
先ほどの例では第2引数に「3」を指定していますので、3文字ごとに区切られ配列として返ります。
PHPにおけるsplit関数の代用としては最もシンプルな操作なのではないでしょうか。
最後に
以上がPHPでsplit関数を使用せずに文字列を分割する方法についてのご紹介となります。いかがでしょうか?
PHPに限らずプログラミングの学習は実際に書くことが大切ですので、実際にエディタで「explode関数」、「preg_split関数」、「str_split関数」を使用し動作を確かめていきましょう。