Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何消除冗余<;br/>;使用PHP的HTML代码中的标记?_Php_Html_Regex_Preg Replace - Fatal编程技术网

如何消除冗余<;br/>;使用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_

我正在用PHP解析一些凌乱的HTML代码,其中有一些多余的
标记,我想稍微清理一下。例如:

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