Удаление избыточных строк

Я ищу что-то вроде trim (), но в пределах строки. Иногда пользователи вводят 2, 3, 4 или более строки после ввода типа, мне нужно дезинформировать этот вход.

Пример ввода

i like cats my cat is happy i love my cat hope you have a nice day 

Желаемый выход

 i like cats my cat is happy i love my cat hope you have a nice day 

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

У меня странное чувство, что для этого есть регулярное выражение.

Related of "Удаление избыточных строк"

 function str_squeeze($body) { return preg_replace("/\n\n+/", "\n\n", $body); } 

Сколько текста вам нужно для этого? Если это меньше, чем около 100k, вы могли бы просто использовать простой поиск и заменить регулярное выражение (поиск чего-то типа /\n+/ и заменить на \n )

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

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

Наконец, удалось получить его, для этого требуется preg, поэтому вы используете версию PCRE в php, а также нужна строка замены \ n \ n, чтобы не стереть все концы строк, кроме одного:

  $body = preg_replace("/\n\n+/", "\n\n", $body); 

Спасибо, что помог мне на правильном пути.

Чтобы рассмотреть все три последовательности прерывания строки:

 preg_replace('/(?:\r\n|[\r\n]){2,}/', "\n\n", $str) 

Следующее регулярное выражение должно удалять несколько строк, игнорируя отдельные разрывы строк, которые в соответствии с вашим определением:

 ereg_replace("\n\n+", "\n\n", $string); 

Вы можете протестировать его с помощью этого инструмента тестирования регулярного выражения PHP , что очень удобно (но, как кажется, не в идеальном соотношении с PHP).

[EDIT] Исправлена ​​ошибка «to», поскольку они, похоже, не работали. Должен признать, что я просто проверил регулярное выражение в веб-инструменте.;)