替换<;的多个连接实例;br/>;只需一个<;br/>;php

替换<;的多个连接实例;br/>;只需一个<;br/>;php,php,regex,preg-replace,Php,Regex,Preg Replace,我正在剥离HTML并将所有和标记替换为标记。问题是我留下了随机的标记,比如 <br /><br /><br /> <br /><br /> <br /><br /><br /><br /> $comment = strip_tags($comment,'<div><p>'); $comment = preg_replace("/<p[^>]*?>

我正在剥离HTML并将所有
标记替换为

标记。问题是我留下了随机的

标记,比如

<br /><br /><br />
<br /><br />
<br /><br /><br /><br />
$comment = strip_tags($comment,'<div><p>');
$comment = preg_replace("/<p[^>]*?>/", "", $comment);
$comment = str_replace("</p>", "<br />", $comment);
$comment = preg_replace("/<div[^>]*?>/", "", $comment);
$comment = str_replace("</div>", "<br />", $comment);










我正在拿一封邮件的正文,然后像这样剥离标签

<br /><br /><br />
<br /><br />
<br /><br /><br /><br />
$comment = strip_tags($comment,'<div><p>');
$comment = preg_replace("/<p[^>]*?>/", "", $comment);
$comment = str_replace("</p>", "<br />", $comment);
$comment = preg_replace("/<div[^>]*?>/", "", $comment);
$comment = str_replace("</div>", "<br />", $comment);
$comment=strip_标签($comment,);
$comment=preg_replace(“/]*?>/”,“”,$comment);
$comment=str_replace(“

”、“
”、$comment); $comment=preg_replace(“/]*?>/”,“”,$comment); $comment=str_replace(“,”
,$comment);
我希望能够用一个

标记替换至少两个相邻的

标记的任何实例。在这一点上,每个

都将与我所展示的完全匹配,但是……它们可能会有所不同,比如


,所以只需确保我可以将任何类型的br标记(至少有两个)替换为一个单独的标记,然后依次重复

br标记看起来像

的“可能性”取决于它是否已经存在于我没有捕捉到的原始HTML中。我知道我可以做一个str_替换(“
”、“
”、$comment)
,但我希望缩短我的代码,而不是增加更多行


你知道怎么做吗?我确信其中涉及正则表达式和preg_replace,但不确定从何处开始。

当您运行
$comment=strip_tags($comment,)
时,将不会剩下

,因为它不是允许的标记。因此,唯一的

将来自下面的四位替代者。换句话说,您只需要关心表单“

”。但是仅仅处理

表单与处理所有其他

表单在难度上没有太大区别


无论如何,您可以使用:

$comment = preg_replace('/(\s*<br[^>]*>){2,}/', '\1', $comment);
$comment=preg_replace('/(\s*]*>){2,}/','\1',$comment);
  • ]*>
    -匹配任何类型的

    标记
  • \s*]*>
    -在

    标记前匹配零个或多个空格
  • (\s*]*>)
    -将此正则表达式分组并捕获到
    \1
  • (…){2,}
    -匹配两个或多个这样的组

替换将保留找到的最后一个

首先将所有

替换为

。然后你就知道该怎么做了。HTML是如何生成的?虽然正则表达式很简单,但您知道……”要求HTML、JSON等。正则表达式往往会遇到负面反应。如果有解析器,请使用它。“请给出一个示例HTML和预期结果示例示例
$comment=preg\u replace(“~(?:\s*\s*){2,}~i',“
,$comment”)