この質問は、splitの代わりにpreg_splitを使用するのと非常に似ていますが、クリアするために生きている正規表現といくつかの混乱があります。
代わりにpreg_split()を使用するようにいくつかの既存のsplit()関数を更新しようとすると、不明確な結果が得られます。以下のコードを実行すると、さまざまな長さの配列が得られますが、その理由はわかりません。
私が見ることができることから、splitは\nで可能な\rと事前に一致しています。そして、preg_splitも同じことをしていると思いますが、なぜ2つの分割を作成するのでしょうか。これは怠惰な/貪欲なマッチングと関係がありますか?
デモコード:
$test = "\r\n";
$val = split('\r?\n', $test); //literal interpretation of string
$val_new = split("\r?\n", $test); //php understanding that these are EOL chars
$val2 = preg_split('/\r?\n/', $test);
var_dump($val); // returns array(1) { [0]=> string(2) " " }
var_dump($val2); // returns array(2) { [0]=> string(0) "" [1]=> string(0) "" }
編集:Kolinksのコメントに基づいて$ val_newに追加されました。これは、問題の理解を深めるのに役立ち、他の人にも役立つ可能性があるためです。