Я хочу разбить строку по строкам, но я хочу, чтобы она основывалась на всех основных используемых символах разрыва строки:
И вернуть массив, содержащий каждую строку.
Вместо этого можно использовать регулярное выражение и preg_split:
preg_split
$lines = preg_split('/\n|\r\n?/', $str);
Регулярное выражение \n|\r\n? соответствует либо LF, либо CR, за которым может следовать LF.
\n|\r\n?
preg_split('/\R/', $str);
В PHP preg_split (), preg_match и preg_replace \R соответствует всем разрывам строк любого вида.
\R
http://www.pcre.org/pcre.txt
По умолчанию последовательность \R в шаблоне соответствует любой последовательности новой строки Unicode, независимо от того, какая из них была выбрана в качестве конечной последовательности строки.Если вы укажете --enable-bsr-anycrlf , значение по умолчанию будет изменено таким образом, чтобы \R соответствовало только CR, LF или CRLF.Все, что выбрано при сборке PCRE, может быть переопределено при вызове функций библиотеки.
По умолчанию последовательность \R в шаблоне соответствует любой последовательности новой строки Unicode, независимо от того, какая из них была выбрана в качестве конечной последовательности строки.Если вы укажете
--enable-bsr-anycrlf
, значение по умолчанию будет изменено таким образом, чтобы \R соответствовало только CR, LF или CRLF.Все, что выбрано при сборке PCRE, может быть переопределено при вызове функций библиотеки.
CR
LF
CRLF
Вы можете заменить все случаи прерывания символов уникальным заполнителем, а затем взорвать строку в массиве, выполнив что-то вроде этого:
$my_string = preg_replace(array('/\n/', '/\r/'), '#PH#', $my_string); $my_array = explode('#PH', $my_string);