如何在php中将多个<br/>标签转换为单个<br/>标签

时间:2008-09-25 14:12:16

标签: php html regex

想要转换

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

<br/>

9 个答案:

答案 0 :(得分:35)

您可以使用正则表达式执行此操作:

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

如果您传入源HTML,这将返回一个包含单个&lt; br /&gt;的字符串。取代它们的每一次运行。

答案 1 :(得分:17)

Mine与levik的(+1)几乎完全相同,只是考虑了一些不同的br格式:

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

答案 2 :(得分:6)

增强的可读性,更短,无论属性如何都能产生正确的输出:

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

答案 3 :(得分:5)

谢谢大家...... 二手Jake Mcgraw(+1)版本

刚刚添加了不区分大小写的选项..

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

测试这些正则表达式的好方法是:

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

答案 4 :(得分:2)

使用正则表达式匹配<br/>一次或多次,然后使用preg_replace(或类似)替换为<br/>,例如levik的回复。

答案 5 :(得分:2)

没有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 />'

答案 6 :(得分:1)

您可能想要使用正则表达式。我没有测试过以下内容,但我认为这是正确的。

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

答案 7 :(得分:1)

快速,非正则表达式方法:

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

答案 8 :(得分:1)

用户可以输入多种变体

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

......等等。

所以我觉得下次会更好

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