Это струна, которую я пытаюсь взорвать. Эта строка является частью абзаца, который мне нужно разделить на каждую «новую строку, пробел, новую строку, пробел»:
s
1
Результат от textmagic.com показывает, что он содержит \n, затем пробел, затем \n, а затем пробел.
Вот что я пробовал:
$values = explode("\n\s\n\s",$string); // 1
$values = explode("\n \n ",$string); // 2
$values = explode("\n\r\n\r",$string); // 3
Желаемый результат:
Array (
[0] => s
[1] => 1
)
но ни один из них не работал. Что здесь не так? Как мне это сделать?
Я добавил желаемый результат к вопросу. Кстати, я вернул некоторые изменения, которые вы сделали, потому что они изменяют пробелы и новые строки в строке.
Я предполагаю, что вы имеете дело с новыми строками Windows, поэтому правильная строка станет \n\r \n\r , но я не проверял это, так как набираю этот комментарий со своего мобильного телефона.
Как вы думаете, где именно в выводе textmagic показано, что это было \n? В легенде прямо говорится, что желтые символы считаются символами два, так что гораздо более вероятно, что это действительно \r\n. Кроме того, если вы не уверены, что на самом деле содержат ваши данные, использование urlencode — это быстрый способ увидеть эти «невидимые» последовательности байтов.
Может возникнуть проблема с вашей интерпретацией символа «новой строки», его представление зависит от операционной системы и кодировки набора символов. Таким образом, «\n» может не соответствовать символу «новой строки» ваших данных в двоичном виде. См. en.wikipedia.org/wiki/Новая строка . Скриншот TextMagic говорит, что символ новой строки в данных занимает 2 байта, что должно указать вам правильное направление.






Использование preg_split() для взрыва() несколькими разделителями в PHP
Просто краткое примечание здесь. Чтобы взорвать () строку с использованием нескольких разделителей в PHP, вам придется использовать регулярные выражения. Используйте символ вертикальной черты для разделения разделителей.
$string = "\n\ranystring"
$chunks = preg_split('/(de1|del2|del3)/',$string,-1, PREG_SPLIT_NO_EMPTY);
// Print_r to check response output.
echo '<pre>';
print_r($chunks);
echo '</pre>';
PREG_SPLIT_NO_EMPTY — для возврата только непустых частей.
Просто используйте explode() с PHP_EOL." ".PHP_EOL." ", который имеет формат «новая строка, пробел, новая строка, пробел». Используя PHP_EOL, вы получаете правильный формат новой строки для вашей системы.
$split = explode(PHP_EOL." ".PHP_EOL." ", $string);
print_r($split);
Живая демонстрация на https://3v4l.org/WpYrJ
Каков желаемый результат здесь?