我有一个像下面这样的html字符串。
<ul style="margin-left: 240px;">
<li>One</li>
<li>Three
<ul>
<li>dfdf</li>
</ul>
</li>
<li>dfds</li>
</ul>
我想将<ul>
标记与样式为<div>
<ul>
括起来
<div style="margin-left: 240px;">
<ul>
<li>One</li>
<li>Three
<ul>
<li>dfdf</li>
</ul>
</li>
<li>dfds</li>
</ul>
</div>
我尝试过关注regex
,但它不适用于嵌套的<ul>
。
$html = preg_replace('/<ul(.*?)>(.*?)<\/ul>/s', '<div $1><ul>$2</ul></div>', $html);
找到第一个<ul>
开放和第二个</ul>
关闭之间的字符串。我将在同一个字符串中有多个<ul>
结构
请帮我写一下正确的正则表达式。
答案 0 :(得分:1)
正则表达式不够严格,无法处理嵌套。相反,尝试使用适当的XML或HTML解析器,操作解析后的结构,并将其渲染回字符串。
答案 1 :(得分:0)
试试这个:
$html = preg_replace('/<ul (.*?)>(.+)</ul>/gs', '<div $1><ul>$2</ul></div>', $html);