Ответ 1
Вы можете сделать это с помощью регулярного выражения:
preg_replace("/(<br\s*\/?>\s*)+/", "<br/>", $input);
Это, если вы передадите исходный HTML-код, это вернет строку с единственной заменой каждого из них. lt; br/" >
Требуется конвертировать
<br/>
<br/>
<br/>
<br/>
<br/>
в
<br/>
Вы можете сделать это с помощью регулярного выражения:
preg_replace("/(<br\s*\/?>\s*)+/", "<br/>", $input);
Это, если вы передадите исходный HTML-код, это вернет строку с единственной заменой каждого из них. lt; br/" >
Мина почти точно такая же, как levik (+1), просто принимая во внимание отличное форматирование br:
preg_replace('/(<br[^>]*>\s*){2,}/', '<br/>', $sInput);
Улучшенная читаемость, короче, дает правильный вывод независимо от атрибутов:
preg_replace('{(<br[^>]*>\s*)+}', '<br/>', $input);
Спасибо всем.. Используемая версия Jakemcgraw (+1)
Просто добавил аргумент без учета регистра.
{(<br[^>]*>\s*)+}i
Отличный инструмент для проверки этих регулярных выражений:
Используйте регулярное выражение для соответствия <br/>
один или несколько раз, а затем используйте preg_replace (или аналогичный) для замены с помощью <br/>
, таких как ответ levik.
без 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 />'
Вероятно, вы хотите использовать регулярное выражение. Я не тестировал следующее, но считаю, что это правильно.
$text = preg_replace( "/(<br\s?\/?>)+/i","<br />", $text );
Быстрое, не регулярное выражение:
while(strstr($input, "<br/><br/>"))
{
$input = str_replace("<br/><br/>", "<br/>", $input);
}
Пользователь может ввести много вариантов
<br>
<br/>
< br />
<br >
<BR>
<BR>< br>
... и многое другое.
Итак, я думаю, что будет лучше следующего
$str = preg_replace('/(<[^>]*?br[^>]*?>\s*){2,}/i', '<br>', $str);