PHP怎么使用正则去除字符串中带有某个class的标签?

$str = '<ul id="Lb_show">
<li style="float: left; width: 100%;" class="clone">
<img src="/banner5.jpg">
</li>
<li style="float: left; width: 70%;">
<img src="/banner1.png">
</li>
<li style="float: left; width: 60%;" class="clone">
<img src="/banner1.png">
</li>
<li style="float: left; width: 30%;">
<img src="/banner1.png">
</li>
<li style="float: left; width: 50%;" class="clone">
<img src="/banner5.jpg">
</li>
</ul>';
我想要把$str这个字符串中class为clone的几个<li>标签整个去除,求大神解答。

<?php

$str = '<ul id="Lb_show">
<li style="float: left; width: 100%;" class="clone">
<img src="/banner5.jpg">
</li>
<li style="float: left; width: 70%;">
<img src="/banner1.png">
</li>
<li style="float: left; width: 60%;" class="clone">
<img src="/banner1.png">
</li>
<li style="float: left; width: 30%;">
<img src="/banner1.png">
</li>
<li style="float: left; width: 50%;" class="clone">
<img src="/banner5.jpg">
</li>
</ul>';

$str = preg_replace('~<li.*?class="clone"[\s\S]*?</li>~', '', $str);

echo $str;

追问

我实际的字符串是没有排版空格的,就是紧挨着的一串字符串,上面的正则替换ul里面就是空的了,大神求解

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-04

由于你提供的信息不够充分,下面是一个示例:

$str = preg_replace('#<div[^>]*?class="removeClass"[^>]*>(.*?)</div>#is', '', $str);

相似回答