PHP REGEX - текст в массив preg_split при разрыве строки - PullRequest
4 голосов
/ 26 апреля 2010

РЕДАКТИРОВАНИЕ:

нужна помощь при разборе массива

Пример массива:

 array (

           [0] =>
            :some normal text
            :some long text here, and so on... sometimes 
            i'm breaking down and...
            :some normal text
            :some normal text
        )

ОК, теперь с помощью

preg_split( '#\n(?!s)#' ,  $text );

я получаю

[0] => Array
        (
            [0] => some normal text
            [1] => some long text here, and so on... sometimes
            [2] => some normal text
            [3] => some normal text
        )

Я хочу получить это:

[0] => Array
        (
            [0] => some normal text
            [1] => some long text here, and so on... sometimes i'm breaking down and...
            [2] => some normal text
            [3] => some normal text
        )

что Regex может получить всю строку, а также разбить ее на разрыв строки !?

Ответы [ 5 ]

21 голосов
/ 26 апреля 2010

«разрыв строки» не определен. Windows использует только CR + LF (\ r \ n), Linux LF (\ n), OSX CR ​​(\ r).

В preg_ * регулярных исключениях есть малоизвестный специальный символ \ R, который соответствует всем трем:

preg_match('/^\R$/', "\r\n"); // 1
7 голосов
/ 26 апреля 2010

Вот пример, который работает, даже если у вас есть символ двоеточия, встроенный в строку (но не в начале строки):

$input = ":some normal text
:some long text here, and so on... sometimes
i'm breaking: down and...
:some normal text
:some normal text";

$array = preg_split('/$\R?^:/m', $input);
print_r($array);

результат:

Array
(
    [0] => some normal text
    [1] => some long text here, and so on... sometimes
           i'm breaking: down and...
    [2] => some normal text
    [3] => some normal text
)
2 голосов
/ 26 апреля 2010

file() считывает файл в массив.

0 голосов
/ 02 декабря 2014

Если вы разбили массив на: символ ..

print_r(preg_split('/:/', $input));
0 голосов
/ 26 апреля 2010
$lines = explode("\n", $text);
...