如何使用XPATH保持<p> <img ...=""/> </p>?

时间:2011-10-22 16:03:04

标签: php xpath domdocument htmltidy

我使用XPATH删除不整洁的HTML标记,

$nodeList = $xpath->query("//*[normalize-space(.)='' and not(self::br)]");
    foreach($nodeList as $node) 
    {
        $node->parentNode->removeChild($node);
    }

将删除这些可怕的输入,

<p><em><br /></em></p>
<p><span style="text-decoration: underline;"><em><br /></em></span></p>

但它也删除了我想保留的img tag类似的打击,

<p><img title="picture summit" src="images/32913430_127001_e.jpg" alt="picture summit" width="590" height="366" /></p>

如何使用XPATH保留img tag输入?

2 个答案:

答案 0 :(得分:1)

使用

//p[not(descendant::*[self::img or self::br]) and normalize-space()='']

答案 1 :(得分:0)

也许您可以使用类似下面的XPath 1.0表达式删除不需要的段落:

//p[count(text())=0 and count(img)=0]