Как заменить строку, содержащую любую последовательность перевода строки и пробелов, на один перевод строки - PullRequest
1 голос
/ 15 марта 2011

Я пытаюсь создать функцию замены / регулярного выражения строки PHP, которая принимает строку с любой последовательностью перевода строки и пробела и заменяет ее на один перевод строки.

Возможно ли это, и если да,как это будет сделано?

Ответы [ 3 ]

1 голос
/ 15 марта 2011

Вы можете попробовать:

= preg_replace('/\s*[\r\n]+\s*/', "\n", $text);

Он будет искать один CR или LF для обнаружения разрывов строк в Unix, Windows и старых Mac. И после этого любые пробелы (пробел, табуляция, CR, LF) будут удалены.

  • Однако я бы удалил первый \s*, чтобы игнорировать пробелы в предыдущей строке.
  • Последний \s* также может быть [\r\n ]*, если вы хотите сохранить \ tabs.

См. Также https://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world, если вы хотите уточнить это регулярное выражение.

1 голос
/ 15 марта 2011

Если пробелы / разрывы могут встречаться в любой последовательности и из любой потенциальной ОС, тогда это будет подход дробовика:

$fixed_string = preg_replace('/[\s\n\r]+/', "\n", $bad_string);

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

0 голосов
/ 15 марта 2011

Попробуйте это:

http://www.regular -expressions.info / tutorial.html

Отличный исходный материал!

...