虽然意识到使用regex(而不是使用PHP dom操纵符)的某些html操作的陷阱/危险,但我试图实现一些应该非常简单而不是那么危险的东西。
基本上我有一些未清理的html副本从数据库,不使用段落,但换行标签来产生段落的效果。有时,用户只输入带有一个换行符的内容,这样文本行就会返回,但不会出现空行。在这种情况下,并且仅在这种情况下,我想用两个(<br><br>
)替换单个<br>
。
所以作为一个例子…
This is <br>a test<br><br>example!
将成为
This is <br><br>a test<br><br>example!
注意第二组break是如何被单独留下的,因为它已经有2个标签。
简单地将<br>
替换为<br>
:)
替代:
(<br>)+
替换为:
<br><br>
你可以使用负向前看和向后看来解决这个问题:
(?<!<br>)<br>(?!<br>)
请看下面的例子:http://rubular.com/r/WYjoenH1SA
(?<!NOPREFIX)
(?!NOPOSTFIX)
第一部分阻止匹配,如果NOPREFIX
存在,第二部分阻止匹配,如果NOPOSTFIX
存在。