php splitは非推奨になったようですね。(自分用メモ
$str = "a-b-c-d";
こんなのを/-/でsplitしたくなって、split関数つかったらwarningsでた。
PHP Deprecated: Function split() is deprecated in
「分かったよ。何かエラーでたらphp pro行けばいいんだろ」
ってことで、見てみると
警告
この関数は PHP 5.3.0 で 非推奨となりました。 この機能を使用しないことを強く推奨します。
と赤字で大きく書いてある。
注意: PHP 5.3.0 以降、 regex 拡張モジュールは非推奨となりました。かわりに PCRE 拡張モジュール を使うことが推奨されています。 この関数をコールすると E_DEPRECATED が発生します。 PCRE への変換についてのヘルプは 相違点の一覧 を参照ください。
なるほどね
splitの代わりに
ご丁寧にちゃんと代替方法が紹介されている。
Perl 互換の正規表現構文を使用する preg_split() は、往々にして split() よりも速い代替案となります。 正規表現の威力が必要ないのであれば、explode() を使用するほうがより高速です。これは正規表現エンジンの オーバーヘッドを受けません。
Perl の @chars = split('', $str) と同等の処理をする方法を知りたい場合は、 preg_split() あるいは str_split() の例を参照ください。
Perl互換の正規表現使いたいなら preg_split() で、特に必要なければ explode() ってことか。
str_split() は確かに文字を一文字ずつバラバラにするにはいいけど、それ以外には使いにくそう。
$st = "a-b-c-d"; print_r(preg_split('/-/', $st)); print_r(explode('-', $st));
何かしたいときに、その実現方法が組み込み関数にあるのかないのか調べるオーバーヘッドが高い・・。