Я ищу что-то вроде 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
Я не вижу ничего встроенного, и замена строки потребует много итераций для выполнения этой работы. Прежде чем я подниму небольшую рекурсивную строку, я хотел бы посмотреть, какие другие предложения у вас были.
У меня странное чувство, что для этого есть регулярное выражение.
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», поскольку они, похоже, не работали. Должен признать, что я просто проверил регулярное выражение в веб-инструменте.;)