Разбить строку на \ r \ n & \ n & \ r одновременно? - PullRequest
23 голосов
/ 19 февраля 2011

Я хочу разбить строку по строкам, но я хочу, чтобы она основывалась на всех основных используемых символах разрыва строки:

  • \ n
  • \ r \ n
  • \ r

И вернуть массив, содержащий каждую строку.

Ответы [ 3 ]

38 голосов
/ 19 февраля 2011

Вместо этого можно использовать регулярное выражение и preg_split:

$lines = preg_split('/\n|\r\n?/', $str);

Регулярное выражение \n|\r\n? соответствует либо LF, либо CR, за которым может следовать LF.

24 голосов
/ 25 января 2012

preg_split('/\R/', $str);

В PHP preg_split (), preg_match и preg_replace \R соответствует всем разрывам строк любого вида.

http://www.pcre.org/pcre.txt

По умолчанию последовательность \R в шаблоне соответствует любой последовательности новой строки Unicode, независимо от того, какая из них была выбрана в качестве конечной последовательности строки.Если вы укажете

--enable-bsr-anycrlf

, значение по умолчанию будет изменено таким образом, чтобы \R соответствовало только CR, LF или CRLF.Все, что выбрано при сборке PCRE, может быть переопределено при вызове функций библиотеки.

1 голос
/ 19 февраля 2011

Вы можете заменить все случаи прерывания символов уникальным заполнителем, а затем взорвать строку в массиве, выполнив что-то вроде этого:

$my_string = preg_replace(array('/\n/', '/\r/'), '#PH#', $my_string);
$my_array = explode('#PH', $my_string);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...