Подтвердить что ты не робот

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

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

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

в

<br/>
4b9b3361

Ответ 1

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

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

Это, если вы передадите исходный HTML-код, это вернет строку с единственной заменой каждого из них. lt; br/" >

Ответ 2

Мина почти точно такая же, как levik (+1), просто принимая во внимание отличное форматирование br:

preg_replace('/(<br[^>]*>\s*){2,}/', '<br/>', $sInput);

Ответ 3

Улучшенная читаемость, короче, дает правильный вывод независимо от атрибутов:

preg_replace('{(<br[^>]*>\s*)+}', '<br/>', $input);

Ответ 4

Спасибо всем.. Используемая версия Jakemcgraw (+1)

Просто добавил аргумент без учета регистра.

{(<br[^>]*>\s*)+}i

Отличный инструмент для проверки этих регулярных выражений:

http://www.spaweditor.com/scripts/regex/index.php

Ответ 5

Используйте регулярное выражение для соответствия <br/> один или несколько раз, а затем используйте preg_replace (или аналогичный) для замены с помощью <br/>, таких как ответ levik.

Ответ 6

без 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 />'

Ответ 7

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

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

Ответ 8

Быстрое, не регулярное выражение:

while(strstr($input, "<br/><br/>"))
{
    $input = str_replace("<br/><br/>", "<br/>", $input);
}

Ответ 9

Пользователь может ввести много вариантов

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

... и многое другое.

Итак, я думаю, что будет лучше следующего

$str = preg_replace('/(<[^>]*?br[^>]*?>\s*){2,}/i', '<br>', $str);