Intereting Posts
Загрузка файлов и безопасность Функция com_create_guid () получила ошибку на стороне сервера, но отлично работает в локальной сети, используя php PHP Получить имя текущего каталога Что такое «Жадный токен-анализ»? Проверка даты и времени Laravel 5.1 позволяет использовать два формата Как получить атрибут узла с пространством имен с помощью SimpleXML? Скриншоты веб-страницы с PHP? PHP preg_filter возвращает неожиданное длинное значение добавление параметров к переопределенному методу E_STRICT Ошибка запуска приложения Google App Engine: «C: / Documents and Settings / userName / php» является каталогом, и требуется файл конфигурации yaml Преобразование именных объектов HTML в числовые объекты HTML Laravel: Как взять последние строки n (любое число) после упорядоченного в порядке возрастания? Ошибка MySQL / PHP: Разрешено только одно использование каждого адреса сокета (протокол / сетевой адрес / порт) Обработка ошибок php foreach в функции cakePHP 3.0 и бутстрап-глификоны

Удалить новые строки из строки

$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