我需要替换所有:
<p> </p>
<p> </p>
<p> </p>
与
<p> </p>
使用正则表达式我将如何做到这一点?
答案 0 :(得分:1)
如果这是一个有限的案例,您可以使用preg_replace()
来实现:
RegEx:(<p> <\/p>\s*)+
替换:\1
答案 1 :(得分:0)
尽管有些评论正确地指出使用正则表达式解析HTML是危险的,但在受控环境中或者不需要解析时(我相信你的情况,因为你似乎只想更换一些东西)我认为它是最佳解决方案(尽管不是很完美)。
无论哪种方式,如果我正确理解您的问题,您想用单个实例替换多个重复项?在这种情况下,它可以通过正则表达式简单地实现:
"<br><br>a<br><br><br>b".replace(/(<br>){2,}/g, '<br>');
该示例在javascript中(因为我可以从浏览器控制台测试它),但正则表达式和基本概念在php中是相同的:您匹配您感兴趣的字符串的两个或更多实例并替换它只有一个实例。
答案 2 :(得分:0)
您应该使用 html解析器而不是正则表达式。
但如果p
标签未嵌套,您可以使用此正则表达式
/<p> </p>/
答案 3 :(得分:0)
你走了:
"<p> </p>\n<p> </p>\n<p> </p>"
.replace(/(<p> <\/p>\n?)+/, "<p> </p>");
答案 4 :(得分:0)
如果您不想使用正则表达式,请使用str_replace
。
将所有<p> </p><p> </p>
替换为1并执行此操作直到不做任何更改。
$input2 = $input_text;
$end = false;
while(!$end){
$temp_text=str_replace("<p> </p><p> </p>","<p> </p>", $input2);
if($temp_text == $input2){
$end = true;
}
else{
$input2 = $temp_text;
}
}
在str_replace()
行中,您可能需要添加换行符(\n
)和/或换行符(\r
)。