Регулярное выражение с несколькими символами новой строки в последовательности - PullRequest
1 голос
/ 23 июня 2009

Я пытаюсь использовать PHP split () (preg_split () также является опцией, если ваш ответ работает с ним), чтобы разделить строку на 2 или более \r\n. Мои текущие усилия:

split("(\r\n){2,}",$nb);

Проблема в том, что он совпадает каждый раз, когда есть 2 или 3 \r\n, затем продолжается и находит следующий. Это неэффективно с 4 или более \r\n.

Мне нужно, чтобы все экземпляры двух или более \r\n обрабатывались так же, как два \r\n. Например, мне нужно

Hello\r\n\r\nMy\r\n\r\n\r\n\r\n\r\n\r\nName is\r\nShadow

стать

array('Hello','My','Name is\r\nShadow');

Ответы [ 4 ]

2 голосов
/ 23 июня 2009

preg_split() должен сделать это с

$pattern = "/(\\r\\n){2,}/";
1 голос
/ 23 июня 2009

у меня работает:

$nb = "Hello\r\n\r\nMy\r\n\r\n\r\n\r\n\r\n\r\nName is\r\nShadow";
$parts = split("(\r\n){2,}",$nb);
var_dump($parts);
var_dump($parts === array('Hello','My',"Name is\r\nShadow"));

Печать:

array(3) {
  [0]=>
  string(5) "Hello"
  [1]=>
  string(2) "My"
  [2]=>
  string(15) "Name is
Shadow"
}
bool(true)

Обратите внимание на двойные кавычки во втором тесте, чтобы получить символы, представленные \r\n.

1 голос
/ 23 июня 2009

А как насчет следующего предложения:

$ nb = implode ("\ r \ n", array_filter (explode ("\ r \ n", $ nb)));

0 голосов
/ 24 июня 2009

Добавление флага PREG_SPLIT_NO_EMPTY в preg_replace () с шаблоном Томалака "/(\\r\\n){2,}/" сделало это для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...