2011-05-28 1 views
7

PHP - У меня есть строка, которая имеет различные значения в каждой строке:Как взорвать многострочную строку?

$matches="value1 
value2 
value3 
value4 
value5 
"; 

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

Я попытался это:

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

Но результат, как:

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

) 
+1

Какую ОС вы используете? У разных ОС есть разные новые строковые символы: http://en.wikipedia.org/wiki/Newline –

ответ

23

Вам нужно изменить '\n' к "\n".

От PHP.net:

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

\ п перевода строки (LF или 0x0A (10) в ASCII)
More...

+0

ответит через 10 минут. Благодарю. –

5

Read manual

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

Так что используйте "\ п" вместо '\ п'

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