Php 使用正则表达式替换两个的单断点标记
虽然我意识到使用regex(而不是使用PHP-dom操纵器)操纵某些html的陷阱/危险,但我正在尝试实现一些应该非常简单且没有风险的东西 基本上,我有一些未清理的html副本,来自一个数据库,它不使用段落,而是使用换行标记来产生段落的效果。有时,虽然用户只输入带有单个分隔符的内容,因此文本行返回,但没有出现空行。在这种情况下,并且只有在这种情况下,我才想用两个(Php 使用正则表达式替换两个的单断点标记,php,regex,Php,Regex,虽然我意识到使用regex(而不是使用PHP-dom操纵器)操纵某些html的陷阱/危险,但我正在尝试实现一些应该非常简单且没有风险的东西 基本上,我有一些未清理的html副本,来自一个数据库,它不使用段落,而是使用换行标记来产生段落的效果。有时,虽然用户只输入带有单个分隔符的内容,因此文本行返回,但没有出现空行。在这种情况下,并且只有在这种情况下,我才想用两个()来替换单个) 所以作为一个例子 This is <br>a test<br><br>exampl
)来替换单个
)
所以作为一个例子
This is <br>a test<br><br>example!
这是一个
测试
示例!
将成为
This is <br><br>a test<br><br>example!
这是一个测试
示例!
请注意,第二组中断是如何被保留的,因为它已经有了2个标记。只需将一个或多个出现的
替换为
:)
替换什么:
(<br>)+
(
)+
替换为:
<br><br>
您可以使用来解决此问题:
(?<!<br>)<br>(?!<br>)
(?)
(?!
)
请参见此处的示例:
(?
如果存在NOPREFIX
,则第一部分阻止匹配;如果存在NOPOSTFIX
,则第二部分阻止匹配。一个简单的方法是先用占位符替换双分隔符,然后用双分隔符替换单分隔符,然后用双分隔符替换占位符。如果文本一致(没有额外的空格或斜杠,也没有三重分隔符),那么您可以使用简单的字符串替换而不是正则表达式来完成此操作。OP只想在有单个字符串时进行替换,这将匹配任何数字,例如
(?<!NOPREFIX)
(?!NOPOSTFIX)