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