Взорвать строку на «новой строке, пробеле, новой строке, пробеле» в PHP

Это струна, которую я пытаюсь взорвать. Эта строка является частью абзаца, который мне нужно разделить на каждую «новую строку, пробел, новую строку, пробел»:

s

 1

Результат от textmagic.com показывает, что он содержит \n, затем пробел, затем \n, а затем пробел.

Взорвать строку на «новой строке, пробеле, новой строке, пробеле» в PHP

Вот что я пробовал:

$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
)

но ни один из них не работал. Что здесь не так? Как мне это сделать?

Каков желаемый результат здесь?

Qirel 19.06.2019 08:26

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

node_man 19.06.2019 08:30

Я предполагаю, что вы имеете дело с новыми строками Windows, поэтому правильная строка станет \n\r \n\r , но я не проверял это, так как набираю этот комментарий со своего мобильного телефона.

Ferrybig 19.06.2019 08:37

Как вы думаете, где именно в выводе textmagic показано, что это было \n? В легенде прямо говорится, что желтые символы считаются символами два, так что гораздо более вероятно, что это действительно \r\n. Кроме того, если вы не уверены, что на самом деле содержат ваши данные, использование urlencode — это быстрый способ увидеть эти «невидимые» последовательности байтов.

04FS 19.06.2019 08:50

Может возникнуть проблема с вашей интерпретацией символа «новой строки», его представление зависит от операционной системы и кодировки набора символов. Таким образом, «\n» может не соответствовать символу «новой строки» ваших данных в двоичном виде. См. en.wikipedia.org/wiki/Новая строка . Скриншот TextMagic говорит, что символ новой строки в данных занимает 2 байта, что должно указать вам правильное направление.

Code4R7 19.06.2019 09:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
316
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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

Другие вопросы по теме