首页 > 解决方案 > 检测没有前置字符的换行符

问题描述

我试图检测 PHP 中的换行符并将它们替换<br>为前面没有</ul>,<ul></li>.

te
<ul>
<li>iasd</li>
<li>asd</li>
</ul>
ja
123

应该导致

te<br>
<ul>
<li>iasd</li>
<li>asd</li>
</ul>
ja<br>
123<br>

到目前为止我想出的正则表达式有效,但是当新行前面(^|^.|.[^((\/li>)|<\/ul>|<ul>)])\r?\n只有 a 时也会触发。>

标签: phpregex

解决方案


怎么换:

(?<!(?:<ul>)|(?:<\/ul>)|(?:<\/li>))([\n\r]|$)

<br>\1

如此处所见

解释:

使用负面的lookbehinds,好吧,lookbehinds通常会让你的生活更轻松。您可以在这里了解更多信息:https ://www.regular-expressions.info/lookaround.html


推荐阅读