替换<;的多个连接实例;br/>;只需一个<;br/>;php
我正在剥离HTML并将所有替换<;的多个连接实例;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[^>]*?>
和
标记替换为
标记。问题是我留下了随机的
标记,比如
<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”)代码>