Удалить новые строки из строки и заменить их одним пустым пробелом - PullRequest
258 голосов
/ 21 сентября 2010
$string = "
put returns between paragraphs

for linebreak add 2 spaces at end

";

Хотите удалить все новые строки из строки.

У меня есть это регулярное выражение, оно может перехватить их все, проблема в том, что я не знаю, с какой функцией мне его использовать.

/\r\n|\r|\n/

$string должно стать:

$string = "put returns between paragraphs for linebreak add 2 spaces at end ";

Ответы [ 19 ]

2 голосов
/ 22 апреля 2017

возможно это работает:

$str='\n';
echo str_replace('\n','',$str);
2 голосов
/ 19 ноября 2015

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

2 голосов
/ 22 сентября 2010

это шаблон, который я бы использовал

$string = preg_replace('@[\s]{2,}@',' ',$string);
1 голос
/ 10 февраля 2017

Я был удивлен, увидев, как мало кто знает о регулярных выражениях.

Обрезать переводы строк в php

$str = preg_replace('/\r?\n$/', ' ', $str);

В perl

$str =~ s/\r?\n$/ /g;

Значение заменить любой перевод строкисимвол в конце строки (для эффективности) - возможно, перед ним стоит возврат каретки - с пробелом.

\ n или \ 015 - новая строка.\ r или \ 012 - возврат каретки.?в регулярном выражении означает совпадение с 1 или нулем предыдущего символа.$ in regex означает совпадение конца строки.

Исходная и лучшая ссылка на regex - perldoc perlre, каждый кодировщик должен хорошо знать этот документ: http://perldoc.perl.org/perlre.html Обратите внимание, что не все функции поддерживаются всеми языками.

1 голос
/ 09 ноября 2016

Вы можете попробовать приведенный ниже код, который сохранит все пробелы и новые строки в вашем тексте.

$str = "
put returns between paragraphs

for linebreak add 2 spaces at end

";

echo preg_replace( "/\r|\n/", "", $str );
1 голос
/ 14 мая 2015

Этот также удаляет вкладки

$string = preg_replace('~[\r\n\t]+~', '', $text);
0 голосов
/ 08 апреля 2019

Многие из этих решений не работают для меня. Это добилось цели, хотя: -

$svgxml = preg_replace("/(*BSR_ANYCRLF)\R/",'',$svgxml);

Вот ссылка: - PCRE и новые линии

0 голосов
/ 22 июня 2019

Вы можете удалить новую строку и несколько пробелов.

$pattern = '~[\r\n\s?]+~';
$name="test1 /
                     test1";
$name = preg_replace( $pattern, "$1 $2",$name);

echo $name;
0 голосов
/ 15 июня 2018

этот код ниже работает весь текст, пожалуйста, используйте его:

$des = str_replace('\n',' ',$des);
$des = str_replace('\r',' ',$des);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...