Как преобразовать несколько тегов <br/> в один тег <br/> в php

Требуется конвертировать

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

в

 <br/> 

Вы можете сделать это с помощью регулярного выражения:

 preg_replace("/(<br\s*\/?>\s*)+/", "<br/>", $input); 

Это, если вы передадите исходный HTML-код, это вернет строку с единственным <br/>, заменяющим каждый запуск.

Mine почти точно такая же, как у 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.

Вероятно, вы хотите использовать регулярное выражение. Я не тестировал следующее, но считаю, что это правильно.

 $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);