使用正则表达式替换两个单个break标记

时间:2013-05-28 14:34:08

标签: php regex

虽然意识到使用正则表达式进行某些html操作的陷阱/危险(而不是使用PHP dom操纵器),但我正在尝试实现一些非常简单且没有风险的东西。

基本上我有一些来自数据库的未清理的html副本,它不使用段落而是使用换行标记来产生段落的效果。有时虽然用户只输入了一个中断的内容,但文本行返回但没有出现空白行。在这种情况下,仅在这种情况下,我想用两个<br>替换单个<br><br>

以此为例......

This is <br>a test<br><br>example!  

会变成

This is <br><br>a test<br><br>example! 

请注意第二组中断是如何保留的,因为它已经有2个标记。

2 个答案:

答案 0 :(得分:5)

只需使用<br>替换<br>的一个或多个出现:)

替换:

(<br>)+

替换为:

<br><br>

答案 1 :(得分:3)

您可以使用negative lookahead and lookbehind来解决此问题:

(?<!<br>)<br>(?!<br>)

请参阅此处的示例:http://rubular.com/r/WYjoenH1SA

(?<!NOPREFIX)
(?!NOPOSTFIX)

如果NOPREFIX存在,则第一部分阻止匹配 - 如果存在NOPOSTFIX则阻止第二部分匹配。