Пытаюсь обновить некоторые существующие разделения () вместо этого использовать preg_split(), и я получаю неясные результаты. Выполнение приведенного ниже кода даст мне массивы разной длины, и я не знаю, почему.
Из того, что я вижу, разделение предварительно сопоставляет \n с возможным \r.
И я думаю, что preg_split() делает то же самое, но тогда почему он создает два разделения? Это связано с ленивым/жадным сопоставлением?
Демо-код:
Код: Выделить всё
$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) "" }
Подробнее здесь: https://stackoverflow.com/questions/102 ... y-newlines
Мобильная версия