Php 正则表达式关闭换行符上的打开标记
Php Regex close open tag on line break
我有 html 这样的代码 :
<li>some text
more text
<li>some other text
any more text
我想关闭列表项。项目应在换行符处关闭。
结果应如下所示:
<li>some text<li>
more text
<li>some other text<li>
any more text
这是我的正则表达式,它不起作用:
preg_replace("/<li>+(.*?)+/ig","\2</li>", $o );
它returns什么都没有,而不是:
<li>some text<li>
more text
<li>some other text<li>
any more text
非常感谢
此正则表达式将获取 li 行中的所有内容,\K
将清除匹配并将 cursor 设置到正确的点:
<li>.*\K
然后替换成:
</li>
这是因为 .
不匹配 \n
。
有效:
<li>.*(?:(?<!<\/li>)(?=\s*\n))\K
这是一个如何使用 preg_replace
解决您的问题的示例
$count = null;
$returnValue = preg_replace('/<li>(.*)/', '<li></li>', '<li>some text
more text', -1, $count);
我有 html 这样的代码 :
<li>some text
more text
<li>some other text
any more text
我想关闭列表项。项目应在换行符处关闭。 结果应如下所示:
<li>some text<li>
more text
<li>some other text<li>
any more text
这是我的正则表达式,它不起作用:
preg_replace("/<li>+(.*?)+/ig","\2</li>", $o );
它returns什么都没有,而不是:
<li>some text<li>
more text
<li>some other text<li>
any more text
非常感谢
此正则表达式将获取 li 行中的所有内容,\K
将清除匹配并将 cursor 设置到正确的点:
<li>.*\K
然后替换成:
</li>
这是因为 .
不匹配 \n
。
有效:
<li>.*(?:(?<!<\/li>)(?=\s*\n))\K
这是一个如何使用 preg_replace
解决您的问题的示例$count = null;
$returnValue = preg_replace('/<li>(.*)/', '<li></li>', '<li>some text
more text', -1, $count);