расщепление строки с каким-то пробелом

У меня есть следующий код:

$output2 = 'text

more text

ja';
$explode = explode('

', $output);

Это прекрасно работает и $explode массив печатает следующее:

Array
(
[0] => text
[1] => meer text
[2] => ja
)

Однако следующий код не работает, и я не знаю, как это исправить:

$output = 'text



more text



ja';

$explode = explode('

', $output);

$explode массив печатает следующее:

Array
(
[0] => text



  //more text



ja
)

Это может показаться странным вопросом. Но первый пример — это тест, который я сделал вручную. Но второй пример — это то, что фактически возвращается из базы данных.

2

Решение

Ты можешь использовать preg_split разделить вашу строку:

<?php
$output = 'text
&NewLine;
&NewLine;more text
&NewLine;
&NewLine;ja';

$explode = preg_split('/(&NewLine;|(\r\n|\r|\n))+/', $output, -1, PREG_SPLIT_NO_EMPTY);

демо: https://ideone.com/KU0v9t (ideone) или же https://eval.in/887393 (eval.in)


Следующее решение разделить на двойной &NewLine;:

$output = 'text
&NewLine;
&NewLine;more text
&NewLine;
&NewLine;ja
&NewLine;nein';

$explode = preg_split('/(\r\n|\r|\n)*(&NewLine;(\r\n|\r|\n)*){2}/', $output, -1, PREG_SPLIT_NO_EMPTY);

демо: https://ideone.com/0txh5O

1

Другие решения

Добавление одной строки в ваш код $output =str_replace("\r\n","",$output ); объединить всю строку в одну строку, чтобы она понравилась вашему первому примеру.

$output =str_replace("\r\n","",$output );
$explode = explode('&NewLine;&NewLine;', $output);
print_r($explode);

Живая демоверсия: https://eval.in/887371

0

$explode = preg_split('/&NewLine;\s*&NewLine;/', $output);
0

нормализуйте вашу строку, удалив все новые строки, такие как символы:

$output = trim(preg_replace('/\s+/', '',$output));

затем взорвать его.

0

Как говорит User2486, проблема в том, что есть некоторые скрытые символы, которые вы не смотрите, такие как \ n и \ r

В вашем первом примере у вас есть

'text&NewLine;&NewLine;more text&NewLine;&NewLine;ja'

а во втором

'text\r\n&NewLine;\r\n&NewLine;more text\r\n&NewLine;\r\n&NewLine;ja'
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector