-3

我需要删除所有包含的 li

<img src="/mapfiles/

例如我有:

<li class="g"><span>Text</span></li>
<li class="g"><span>Text<img src=\"/mapfiles/iconA.png\"></span></li>**- I need remove it**
<li class="g"><span>Text<img src=\"/mapfiles/iconB.png\"></span></li>**- I need remove it**
<li class="g"><span>Text</span></li>

我试过用这个:

preg_replace('!<li class="g">(.*)<img src="/mapfiles/(.*)</li>!is', '', $content);

但是正则表达式匹配第一个 <li class="g"> 和最后一个</li> 所以删除所有 <li>,我如何编写正则表达式来找到最近的</li>?

4

1 回答 1

4

他来的小马...

使用解析器:

$dom = new DOMDocument();
$dom->loadHTML($content);
$xpath = new DOMXPath($dom);
$remove = $xpath->query("//li[.//img[starts-with(@src,'/mapfiles/')]]");
foreach($remove as $r) $r->parentNode->removeChild($r);
$output = substr($dom->saveHTML($dom->getElementsByTagName('body')->item(0)),6,-7);
于 2013-05-28T14:17:32.963 回答