explodeとsplitの違い

PHPで文字列を分割する場合に使用する関数でexplodeとsplitというものがあります。以下が使用例です。

<?php
$str = 'a-b-c';
$ary = explode('-', $str);
var_dump($ary); // array('a', 'b', 'c')

このように、第2引数で与えられた文字列を、第1引数の文字列で分割する関数です。今までsplitはexplodeのエイリアスだとばっかり思い込んでたのですが、先日

<?php
split('?', $str);

とやったら

Warning: split() [function.split]: REG_BADRPT in

のようにエラーがでてしまいました。調べてみたら、どうやらexplodeとsplitは同じではなく、第1引数でとる区切り文字は正規表現のようです。「?」は正規表現特殊文字なのでエラーが出たわけです。

splitはereg系みたいですが、preg_splitという関数もあり、実行速度だと

explode() > preg_split() > split()

みたいですね。

ちなみにexplodeの逆で、implodeとjoinという配列をくっつける関数があるのですが、こちらは同一のようです。

http://php.benscom.com/manual/ja/function.explode.php
http://php.benscom.com/manual/ja/function.split.php