Php 检测不带前置字符的换行符

Php 检测不带前置字符的换行符,php,regex,Php,Regex,我正在尝试检测PHP中的换行符,并将其替换为前面没有、或的 te <ul> <li>iasd</li> <li>asd</li> </ul> ja 123 te 国际会计准则理事会 自闭症 青年成就组织 123 应该导致 te<br> <ul> <li>iasd</li> <li>asd</li> </ul> ja<br>

我正在尝试检测PHP中的换行符,并将其替换为前面没有

te
<ul>
<li>iasd</li>
<li>asd</li>
</ul>
ja
123
te
  • 国际会计准则理事会
  • 自闭症
青年成就组织 123
应该导致

te<br>
<ul>
<li>iasd</li>
<li>asd</li>
</ul>
ja<br>
123<br>
te
  • 国际会计准则理事会
  • 自闭症
ja
123
到目前为止,我提出的正则表达式
(^ | ^...[^(\/li>)|
    )]\r?\n
可以工作,但在新行前面只有一个
时也会触发该正则表达式。

替换:

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

\1

如图所示

说明:
使用消极的lookbehinds和,lookbehinds通常会让你的生活更轻松。您可以在这里了解更多信息:

这些元素中不会有任何标题或类属性,所以我认为这些答案不会影响我?我完全控制了这个HTMLYou没有抓住帖子的重点。你不应该使用正则表达式。相反,我会将数据解析为HTML,然后确定要在哪里插入

,因此,您的意思是将HTML视为纯文本,唯一的“HTML”是
之间没有
的子字符串,对吗?那么请将此信息添加到问题中。尝试
preg\u replace(“~
    [^