読者です 読者をやめる 読者になる 読者になる

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));

何かしたいときに、その実現方法が組み込み関数にあるのかないのか調べるオーバーヘッドが高い・・。