如果li标签的打开和关闭标签位于span开始和结束标签之间,则替换li标签

时间:2015-11-11 12:31:42

标签: php html regex

我有一个包含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>

1 个答案:

答案 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>

将替换更改为您需要的任何内容。