хотел конвертировать
<br/> <br/> <br/> <br/> <br/>
в
<br/>
Вы можете сделать это с помощью регулярного выражения:
preg_replace("/(<br\s*\/?>\s*)+/", "<br/>", $input);
Если вы передадите исходный HTML-код, он вернет строку с одним , заменяющим каждый их запуск.
Мой почти такой же, как levik (+1), только с учетом некоторого различного форматирования br:
preg_replace('/(<br[^>]*>\s*){2,}/', '<br/>', $sInput);
Улучшенная читаемость, короче, дает правильный вывод независимо от атрибутов:
preg_replace('{(<br[^>]*>\s*)+}', '<br/>', $input);
Спасибо всем .. Используемая версия Jakemcgraw (+1)
Только что добавлена опция нечувствительности к регистру ..
{(<br[^>]*>\s*)+}i
Отличный инструмент для проверки этих регулярных выражений:
http://www.spaweditor.com/scripts/regex/index.php
без preg_replace, но работает только в PHP 5.0.0 +
$a = '<br /><br /><br /><br /><br />'; while(($a = str_ireplace('<br /><br />', '<br />', $a, $count)) && $count > 0) {} // $a becomes '<br />'
Используйте регулярное выражение для совпадения <br/> один или несколько раз, затем используйте preg_replace (или подобное) для замены на <br/>, например, ответ levik.
Пользователь может ввести много вариантов
<br> <br/> < br /> <br > <BR> <BR>< br>
... и более.
Так что я думаю, что будет лучше
$str = preg_replace('/(<[^>]*?br[^>]*?>\s*){2,}/i', '<br>', $str);
Быстрый подход без регулярного выражения:
while(strstr($input, "<br/><br/>")) { $input = str_replace("<br/><br/>", "<br/>", $input); }
Возможно, вы хотите использовать регулярное выражение. Я не проверял следующее, но я верю, что это правильно.
$text = preg_replace( "/(<br\s?\/?>)+/i","<br />", $text );