2015-10-28 4 views
1

У меня есть текст, разделенный на две строки. Теперь мне нужен массив, содержащий все эти тексты в одном массиве.regex для разделения текста после строк новой строки

Представьте себе следующий текст

Lorem ipsum###Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 

Lorem ipsum###Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 

Lorem ipsum###Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 

Lorem ipsum 

Lorem ipsum 

Lorem ipsum 

Каждый TextBlock должен быть собственный элемент массива, значение, я должен был бы иметь 6 в конце.

Я попробовал, как этот

$bulletList = preg_split('/[\s\n]{2,}/', $text); 

и как этот

$bulletList = preg_split('/[\n]/', text, -1, PREG_SPLIT_NO_EMPTY); 

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

[1]=> string(6) " "

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

Я имею в виду, я мог бы просто использовать continue в цикле foreach, если это пустая строка или с помощью modulo, однако должен быть способ иметь это правильно при получении данных, не так ли?

ответ

3

Вы можете использовать split как:

print_r (preg_split('/\R{2,}/', $data)); 

\R соответствует любому символу новой строки в PCRE.

Выход:

Array 
(
    [0] => Lorem ipsum###Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
    [1] => Lorem ipsum###Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
    [2] => Lorem ipsum###Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et 
    [3] => Lorem ipsum 
    [4] => Lorem ipsum 
    [5] => Lorem ipsum 

) 

Edit: Для линий разграничены <br /> использования этого:

print_r (preg_split('/(?:\R|<br[^>]*>){2,}/', $data, -1, PREG_SPLIT_NO_EMPTY)); 
+0

Эй, спасибо за выход, но это не работает для меня , Это отличается от PCRE и PHP? Я получаю только целую строку как один – Musterknabe

+0

Anubhava, Как вы думаете, '[\ r \ n] +' будет работать? – Tushar

+0

@Tushar Я только что протестировал его. Однако проблема в том, что есть индексы массивов с пробелами, по-прежнему сохраняется – Musterknabe

Смежные вопросы