我有一个包含span开始和结束标记的输入,如果li打开和关闭标记位于其间,我想用某些东西替换li标签。我试过为它编写正则表达式,你可以在这里查看: https://regex101.com/r/vI1sY8/1但它正在替换位于span标记之外的li标记。
我的输入示例:
lol <span style="background-color:limegreen;"> <br /> <li> this </li>
</span> <br /> this is something <li"> This is new </li>
我的输出应该是:
lol <span style="background-color:limegreen;"> <br /> <li style="background-color:limegreen;"> this </li>
</span> <br /> this is something <li"> This is new </li>
答案 0 :(得分:1)
这个正则表达式对我有用。只需交换第二个子组($ 2)即可。 例如:
$html = 'lol <span style="background-color:limegreen;"> <br /> <li> this </li> </span> <br /> this is something <li"> This is new </li>';
$html = preg_replace('/(<span.+>.+)(<li>)(.+<\/li>.+<\/span>)/', '$1 replacement $3', $html);
结果:
lol <span style="background-color:limegreen;"> <br /> replacement this </li> </span> <br /> this is something <li"> This is new </li>
将替换更改为您需要的任何内容。