$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 ";
preg_replace
. Это почти в два раза медленнее, чемstr_replace
.s($str)->normalizeLineEndings('')
полезным, как найти в этой автономной библиотеке . Он удалит не только LF, CR и CRLF, но и любой перевод строки Unicode.Ответы:
Вы должны быть осторожны с двойными переносами строк, которые могут привести к двойным пробелам. Используйте это действительно эффективное регулярное выражение:
Несколько пробелов и переносов заменяются одним пробелом.
Редактировать: Как уже отмечали другие, это решение имеет проблемы, связанные с отдельными символами новой строки между словами. Этого нет в примере, но можно легко увидеть, как эта ситуация может возникнуть. Альтернатива заключается в следующем:
источник
/(?![ ])\s+/
Несколько комментариев по поводу принятого ответа:
Эти
+
средства «1 или более». Я не думаю, что вам нужно повторять\s
. Я думаю, что вы можете просто написать'/\s+/'
.Кроме того, если вы хотите удалить первые и последние пробелы в строке, добавьте
trim
.С этими изменениями код будет:
источник
/\s\s+/
не сможет соответствовать переводу строкиfoo\nbar
.Просто использовать
preg_replace()
С этим можно обойтись
str_replace()
, хотя код не выглядит таким чистым:Посмотри вживую на ideone
источник
$string = preg_replace("~[\r\n]~", "",$string);
источник
\r
символыВы должны использовать str_replace для его скорости и использования двойных кавычек с массивом
источник
\n
а не\r\n
более того, я думаю, что OP просит поставить один пробел вместо новых строкЯ не уверен, имеет ли это какое-либо значение по сравнению с уже представленными ответами, но я могу также опубликовать это.
источник
Заменить регулярные выражения PCRE можно с помощью preg_replace: http://php.net/manual/en/function.preg-replace.php
Заменяет новую строку или возвращает символы с пробелом. Если вы не хотите ничего заменять, измените второй аргумент на
''
.источник
preg
функции используют PCRE, а не POSIX, регулярные выражения. Естьereg
функции, использующие POSIX, но они устарели.Использовать это:
замените серию строк новой строкой:
или вы, вероятно, хотите заменить символы новой строки одним пробелом:
источник
\\n
выглядит ужасно\\\\
соответствовать одному обратному слешу просто ужасно.Escape-последовательность
\R
соответствует общей новой строкеRegex101 Demo
источник
Разрывы строк в тексте обычно представлены как:
\ r \ n - на компьютере с Windows
\ r - на компьютере Apple
\ n - в Linux
источник
Что насчет:
Это должно быть довольно надежное решение, потому что \ n не работает правильно во всех системах, если я не ошибаюсь ...
источник
Я был удивлен, увидев, как мало кто знает о регулярных выражениях.
Уберите переводы строк в php
В перл
Значение означает заменить любой символ новой строки в конце строки (для эффективности) - при желании, перед которым стоит возврат каретки, - пробелом.
\ n или \ 015 - перевод строки. \ r или \ 012 - возврат каретки. ? в регулярном выражении означает совпадение с 1 или нулем предыдущего символа. $ в регулярном выражении означает совпадение конца строки.
Оригинальная и лучшая ссылка на регулярные выражения - это perldoc perlre, каждый кодировщик должен хорошо знать этот документ: http://perldoc.perl.org/perlre.html Обратите внимание, что не все функции поддерживаются всеми языками.
источник
это шаблон, который я бы использовал
источник
возможно это работает:
источник
Этот также удаляет вкладки
источник
Вы можете попробовать ниже код сохранит все пробелы и новые строки в вашем тексте.
источник
Многие из этих решений не сработали для меня. Это сделало трюк, хотя: -
Вот ссылка: - PCRE и новые линии
источник
этот код ниже работает весь текст, пожалуйста, используйте его:
источник
Вы можете удалить новую строку и несколько пробелов.
источник