[英]How to convert multiple <br/> tag to a single <br/> tag in php
想要转换
<br/>
<br/>
<br/>
<br/>
<br/>
进入
<br/>
您可以使用正则表达式执行此操作:
preg_replace("/(<br\s*\/?>\s*)+/", "<br/>", $input);
如果您传入源HTML,则会返回一个字符串,其中包含一个<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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.