【发布时间】:2010-09-13 02:40:20
【问题描述】:
想要转换
<br/>
<br/>
<br/>
<br/>
<br/>
进入
<br/>
【问题讨论】:
-
您是否正在寻找可以输入 HTML 文件并减少 BR 标签的 PHP 程序?您的问题并不完全清楚。
想要转换
<br/>
<br/>
<br/>
<br/>
<br/>
进入
<br/>
【问题讨论】:
使用正则表达式匹配<br/>一次或多次,然后使用preg_replace(或类似的)替换为<br/>,例如levik的回复。
【讨论】:
您可以使用正则表达式来做到这一点:
preg_replace("/(<br\s*\/?>\s*)+/", "<br/>", $input);
如果您传入源 HTML,这将返回一个字符串,其中单个
替换它们的每次运行。
【讨论】:
您可能想要使用正则表达式。以下我没有测试过,但我相信它是正确的。
$text = preg_replace( "/(<br\s?\/?>)+/i","<br />", $text );
【讨论】:
我的几乎与levik 的 (+1) 完全相同,只是考虑了一些不同的 br 格式:
preg_replace('/(<br[^>]*>\s*){2,}/', '<br/>', $sInput);
【讨论】:
没有 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 />'
【讨论】:
增强的可读性,更短,无论属性如何都能产生正确的输出:
preg_replace('{(<br[^>]*>\s*)+}', '<br/>', $input);
【讨论】:
谢谢大家.. 使用 Jakemcgraw 的 (+1) 版本
刚刚添加了不区分大小写选项..
{(<br[^>]*>\s*)+}i
测试这些正则表达式的好工具是:
【讨论】:
一种快速、非正则表达式的方法:
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);
【讨论】: