我正在寻找一个preg_replace
模式,用于替换两行背靠背的文本。我想转换一下:
... </li></ul>
<ul><li> ...
到此:
... </li>
<li> ...
或者这个:
... </li><li> ...
当然,如果$pattern = "/<\/ul><ul>/"
标记位于同一行,$replacement = ""
和ul
会产生我正在寻找的内容。但是,只要ul
标记之间有换行符,模式就会失败。
模式$pattern = "/<\/ul>.*<ul>/s"
在孤立的情况下起作用,但在涉及到
... </li></ul>
... THIS IS SOME VALUABLE CONTENT ...
<ul><li> ...
我知道必须有\n
,\r
,<br \/>
或某些需要在ul
标签之间进行组合的组合,但我还没有#{1}}标签。能够找到正确的解决方案。
(我知道对于上面概述的情况,有一个比preg_replace
更好的解决方案,但它是一系列模式和替换对中的一个,我在解析器中迭代使用,所以我想坚持下去。)
答案 0 :(得分:1)
如果您只是尝试用可能的空格替换两行ul
标签...
$str = preg_replace('~</ul>\R*<ul>~', '', $str);
否则,如果试图替换之间的一切;为你的正则表达式添加一个非贪婪的量词。
$str = preg_replace('~</ul>.*?<ul>~s', '', $str);