$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 ";
Вы должны быть осторожны в разрыве двойной линии, что приведет к двойным пробелам. Используйте это действительно эффективное регулярное выражение:
$string = trim(preg_replace('/\s\s+/', ' ', $string));
Несколько пробелов и новых строк заменяются одним пространством.
Изменить: как указывали другие, это решение имеет проблемы, связанные с одной новой линией между словами. Этого нет в этом примере, но можно легко увидеть, как это может произойти. Альтернативой может быть следующее:
$string = trim(preg_replace('/\s+/', ' ', $string));
Несколько комментариев к принятому ответу:
Значение +
означает «1 или более». Я не думаю, что вам нужно повторить. Я думаю, вы можете просто написать '/\s+/'
.
Кроме того, если вы хотите удалить пробелы первым и последним в строке, добавьте trim
.
С этими изменениями код будет выглядеть следующим образом:
$string = preg_replace('/\s+/', ' ', trim($string));
Просто используйте preg_replace()
$string = preg_replace('~[\r\n]+~', '', $string);
Вы можете уйти с str_replace()
на этом, хотя код выглядит не так просто:
$string = str_replace(array("\n", "\r"), '', $string);
Смотрите в прямом эфире на ideone
$string = str_replace(array("\n", "\r"), ' ', $string);
Вы должны использовать str_replace для своей скорости и использовать двойные кавычки с массивом
str_replace(array("\r\n","\r"),"",$string);
Замена регулярных выражений PCRE может быть выполнена с помощью preg_replace: http://php.net/manual/en/function.preg-replace.php
$new_string = preg_replace("/\r\n|\r|\n/", ' ', $old_string);
Замените новую строку или возвращайте символы пробелом. Если вы не хотите, чтобы что-то их заменили, измените второй аргумент на ''
.
Использовать это:
замените серию новых строк пустой строкой:
$string = preg_replace("/[\\n\\r]+/", "", $string);
или вы, вероятно, хотите заменить новые строки одним пространством:
$string = preg_replace("/[\\n\\r]+/", " ", $string);
Как насчет:
$string = trim( str_replace( PHP_EOL, ' ', $string ) );
Это должно быть довольно надежное решение, потому что \ n не работает корректно во всех системах, если я не ошибаюсь …
Я не уверен, что это имеет значение против уже представленных ответов, но я могу просто опубликовать его.
// Create an array with the values you want to replace $searches = array("\r", "\n", "\r\n"); // Replace the line breaks with a space str_replace($searches, "", $string); // Replace multiple spaces with one $output = preg_replace('!\s+!', ' ', $string);
это образец, который я бы использовал
$string = preg_replace('@[\s]{2,}@',' ',$string);
Это также удаляет вкладки
$string = preg_replace('~[\r\n\t]+~', '', $text);
возможно, это работает:
$str='\n'; echo str_replace('\n','',$str);
Вы можете попробовать под кодом, который сохранит любые пробелы и новые строки в тексте.
$str = " put returns between paragraphs for linebreak add 2 spaces at end "; echo preg_replace( "/\r|\n/", "", $str );
Я был удивлен, увидев, как мало кто знает о регулярном выражении.
Полоса новых строк в php
$str = preg_replace('/\r?\n$/', ' ', $str);
В perl
$str =~ s/\r?\n$/ /g;
Значение заменить любой символ новой строки в конце строки (для эффективности) – необязательно предшествует возврат каретки – с пробелом.
\ n или \ 015 – новая строка. \ r или \ 012 – возврат каретки. ? в regex означает совпадение 1 или ноль предыдущего символа. $ в regex означает совпадение конца строки.
Исходная и лучшая ссылка regex – perldoc perlre, каждый кодер должен хорошо знать этот документ: http://perldoc.perl.org/perlre.html. Примечание. Не все функции поддерживаются всеми языками.
Последовательность побега \R
соответствует общей строке новой строки
то есть все, что считается последовательностью строк в Unicode. Сюда входят все символы, совпадающие с
\v
( вертикальные пробелы ) и\x0D\x0A
последовательность\x0D\x0A
…
$string = preg_replace('/\R+/', " ", $string);
В 8-битном режиме без UTF-8
\R
эквивалентно следующему:(?>\r\n|\n|\x0b|\f|\r|\x85)
… pcre.org
Демо-версия Regex101