Как взорвать многострочную строку? - PullRequest
9 голосов
/ 28 мая 2011

У меня есть строка с разными значениями в каждой строке:

$matches="value1
value2
value3
value4
value5
";

Я хочу разбить всю строку на массив, состоящий из разделенных значений.Я знаю, как взорвать строку, разделенную пробелом, как explode(' ', $matches).Но как мне использовать функцию разнесения для этого типа строки?

Я пробовал это:

$matches=explode('\n',$matches);
print_r($matches);

Но результат выглядит так:

Array
(
    [0] => hello
hello
hello
hello
hello
hello
hello

)

Ответы [ 2 ]

28 голосов
/ 28 мая 2011

Вам необходимо изменить '\n' на "\n".

С PHP.net :

Если строка заключена в двойные кавычки("), PHP будет интерпретировать больше escape-последовательностей для специальных символов:

\ n перевод строки (LF или 0x0A (10) в ASCII)
Подробнее ...

5 голосов
/ 28 мая 2011

Чтение Руководство

Примечание: в отличие от двойных кавычек и heredoc синтаксисы, переменные и escape последовательности для специальных символов будут не расширяться, когда они происходят в одиночные кавычки.

Поэтому используйте «\ n» вместо «\ n»

Также вместо \n вы можете использовать константу PHP_EOL.
В Windows "\ r \ n" может использоваться как конец строки, для этого случая вы можете сделать двойную замену:
$matches=explode("\n", str_replace("\r","\n",$matches));

...