如何使用PHP从HTML代码中删除冗余的标签?

时间:2011-06-03 10:59:46

标签: php html regex preg-replace

我正在使用PHP解析一些混乱的HTML代码,其中有一些冗余的标签,我想稍微清理它们。例如:

<br>

<br /><br /> 


<br>

如何使用preg_replace()替换类似的东西?:

<br /><br />

必须考虑新行,空格以及<br><br/><br />之间的差异。

编辑:基本上我想用两个替换三个或更多连续休息的每个实例。

5 个答案:

答案 0 :(得分:6)

这是你可以使用的东西。只要有2个或更多<br>个标记(不同类型之间有空格),第一行就会找到,并用格式良好的<br /><br />替换它们。

如果您也需要,我还会在第二行中添加剩余的<br>代码。

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;
}

答案 1 :(得分:5)

这应该可行,使用最小说明符:

preg_replace('/(<br[\s]?[\/]?>[\s]*){3,}/', '<br /><br />', $multibreaks);

也应该与令人震惊的<br><br /><br/><br>结构相匹配。

答案 2 :(得分:3)

这将取代所有休息......即使它们是大写的:

preg_replace('/<br[^>]*>/i', '', $string);

答案 3 :(得分:0)

尝试:

preg_replace('/<br\s*\/?>/', '', $inputString);

答案 4 :(得分:0)

使用str_replace,它更适合简单替换,您也可以传递数组而不是单个搜索值。

$newcode = str_replace("<br>", "", $messycode);