如何消除冗余<;br/>;使用PHP的HTML代码中的标记?
我正在用PHP解析一些凌乱的HTML代码,其中有一些多余的如何消除冗余<;br/>;使用PHP的HTML代码中的标记?,php,html,regex,preg-replace,Php,Html,Regex,Preg Replace,我正在用PHP解析一些凌乱的HTML代码,其中有一些多余的标记,我想稍微清理一下。例如: <br> <br /><br /> <br> 如何使用preg_replace()替换类似的内容 换行符、空格以及、和之间的差异都必须考虑在内 编辑:基本上,我想用两次中断来替换三次或三次以上连续中断的每个实例。尝试: preg_replace('/<br\s*\/?>/', '', $inputString); preg_
标记,我想稍微清理一下。例如:
<br>
<br /><br />
<br>
如何使用preg_replace()替换类似的内容
换行符、空格以及
、
和
之间的差异都必须考虑在内
编辑:基本上,我想用两次中断来替换三次或三次以上连续中断的每个实例。尝试:
preg_replace('/<br\s*\/?>/', '', $inputString);
preg_replace('/','$inputString);
这将替换所有中断。。。即使它们是大写的:
preg_replace('/<br[^>]*>/i', '', $string);
preg_replace('/]*>/i',''$string);
使用str_replace,它更适合于简单的替换,并且您还可以传递数组而不是单个搜索值
$newcode = str_replace("<br>", "", $messycode);
$newcode=str_replace(“
”,“,$messycode”);
这应该有效,使用最小说明符:
preg_replace('/(<br[\s]?[\/]?>[\s]*){3,}/', '<br /><br />', $multibreaks);
preg_replace('/([\s]*){3,}/','
',$multibreaks);
也应该与骇人听闻的
结构相匹配。这里有一些你可以使用的东西。只要有2个或更多的
标记(类型之间有空格),第一行就会找到,并用格式良好的
替换它们
我还包括了第二行,如果您也需要的话,它将清理其余的
标记
function clean($txt)
{
$txt=preg_replace("{(<br[\\s]*(>|\/>)\s*){2,}}i", "<br /><br />", $txt);
$txt=preg_replace("{(<br[\\s]*(>|\/>)\s*)}i", "<br />", $txt);
return $txt;
}
函数清理($txt)
{
$txt=preg\u replace(“{(\/>)\s*){2,}}}i”,“
,$txt);
$txt=preg\u replace(“{(\/>)\s*)}i“,“
”,$txt);
返回$txt;
}
您如何区分哪些是多余的,哪些不是多余的?基本上我想用两个替换三个或更多连续中断的每个实例。这将删除所有中断标记,对吗?如果是这样,这不是我需要的。我想用两个替换三个或更多连续中断标记的任何实例。请参阅我给hsz的评论。我假设情况也是如此。同样值得注意的是,这样做可能会与标签(如
或不希望完全折叠的类似结构)相匹配。当然,这可能与本例相关。作者写道:基本上,我想用两次来替换三次或更多连续中断的每个实例。谢谢,但不幸的是,简单的替换不是我需要的。我想我最初的帖子有点让人困惑。这几乎是完美的,但是是的,它被
标签噎住了;不是完美的匹配
tooHmm。它似乎不适用于这样的情况:
\n\n\n\n
在换行符之间添加了可选数量的空格,这是否有效?它不仅适用于空格,还适用于换行符吗?无论如何,它似乎运行得很好。我还有一点麻烦:“
”。这会产生3-4条不需要的换行符,但我想我可以自己处理。谢谢你的帮助!还有一件事,如果您将第一次替换中的
更改为
,您可以获得更好的输出(html,不确定您是否计划显示它)。
function clean($txt)
{
$txt=preg_replace("{(<br[\\s]*(>|\/>)\s*){2,}}i", "<br /><br />", $txt);
$txt=preg_replace("{(<br[\\s]*(>|\/>)\s*)}i", "<br />", $txt);
return $txt;
}