Преобразование всех строк и строк в одну строку

1

Я пытаюсь дезинформировать пользовательский ввод и гарантировать отсутствие избыточных строк или новых строк. В настоящее время у меня возникают проблемы из-за того, что пользователи могут использовать три основных способа "разлома",

\n
<br/>
<br />

И есть много вариантов <br>. Поскольку все это приемлемые форматы для разбивки на HTML. Я пробовал искать в Интернете и использовать предыдущие выражения регулярных выражений, но они, похоже, не улавливают множественные строки для сложного

<br/><br /><BR>< br >

Чтобы упростить задачу, я подумал о преобразовании всей строки только в стандартизованные строки, поэтому каждая \r и \n станет какой-то формой <br/> или <br/>, и это может быть проще проанализировать, делая что-то вроде:

$string = 'some input with breaklines and newlines';
$string = nl2br($string);
$string = preg_replace(regex_expression, replacement, $string);

К сожалению, я не знаю regex очень хорошо. Как я могу создать выражение регулярных выражений, чтобы удалить эти варианты всех разломов и сохранить их в одном? Это предыдущие, которые я использовал:

$text = preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $text);
$text = preg_replace("/[\r\n]+/", "\n", $text);
$text = preg_replace('/(<br[^>]*>\s*){2,}/', '<br/>', $text);

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

Вот пример строки, которую я нашел проскальзыванием:

String testing for newlines.<br/><br />
<br/><br />
<br/><br />
Edit 1<br/><br />
<br/><br />
<br/><br />
Edit 3:<br/><br />
Removed redundant newlines
Теги:

1 ответ

3
Лучший ответ

Что вы хотите

$text = preg_replace("/(\r|\n|(\<\s*br\s*\/?\s*>))+/i", "<br/>", $text);

Заменив все кратные \r,\n, <[ ]br[ ][/][ ]> и <[ ]BR[ ][/][ ]> на один <br/>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню