2013-06-08 2 views
4

Я пытаюсь разбить строку в массив с помощью функции explode.Explode string с разрывом строки

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

Я искал его, и я пробовал все пути, но я не могу заставить его работать.

Вот то, что я до сих пор:

$r = explode("\r\n" , $roster[0]); 

Но когда я var_dump переменной, я получаю следующее:

array (size=1) 
    0 => string '\r\n       (G A Sh Hi Ga Ta PIM, +\/- Icetime Rating)\r\nR Danny Kristo   1 0 2 0 0 0 0 1 7.00 7\r\nR Brian Gionta   1 1 5 1 1 0 0 0 19.20 8\r\nR Steve Quailer... 

Любые идеи, почему?

+2

Нет, это на самом деле противоположная система. – raina77ow

ответ

6

Проблема заключается в том, что \r\n в исходном тексте НЕ являются символами конца строки - это просто буквально «обратная косая черта-r-обратная слева-n». Следовательно, вы должны принять это во внимание:

$r = explode('\r\n', $roster[0]); 

... то есть, использовать одиночные кавычки, чтобы разграничить строку.

+0

Спасибо, он сказал везде, что я должен поставить двойные кавычки и не сингл ... Чин! –

+1

лучше использовать 'PHP_EOL' для независимого от платформы решения. – Fr0zenFyr

+1

@ Fr0zenFyr Вы пропустите пункт, название здесь вводит в заблуждение. OP имеет строку со слэшами, за которой следуют 'r' и' n', а не символы EOL. Если бы это было так, ответ @LucasKahlert соответствовал бы лучшему, так как метасимвол '\ R' покрывал все базы. – raina77ow

15

Вы можете попытаться разделить строку регулярным выражением. Существует класс для перевода строки символов:

$r = preg_split('/\R/', $string); 

Редактировать: Добавить недостающие разделители для регулярного выражения и аргумента функционировать.

+0

Я попробовал это, и я получил это: preg_split(): разделитель не должен быть буквенно-цифровым или обратным слэшем –

+0

Я исправил регулярное выражение. Вы должны знать, что этим выражением идентифицируются только «истинные» символы новой строки. Как пишет raina77ow, в \ n \ n \ в вашей строке нет символов новой строки, кроме четырех отдельных символов. Поэтому регулярное выражение не будет совпадать. –

2

Вы можете использовать зависимую EOL

$r = explode(PHP_EOL, $roster[0]);