我想将这些条件一起用于PHP中的XPath查询
//*[contains(concat(' ', normalize-space(@class), ' '), ' metadata ')]
和
*[contains(concat(' ', normalize-space(@class), ' '), ' mw-editsection ')]
我该怎么办?
我在下面尝试了一些但不起作用:
$dom = new DOMDocument;
$dom->loadHTML( mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8"));
$xPath = new DOMXPath($dom);
$nodes = $xPath->query('//*[contains(concat(\' \', normalize-space(@class), \' \'), \' metadata \') and //*contains(concat(\' \', normalize-space(@class), \' \'), \' mw-editsection \ ]');
if($nodes->item(0)) {$nodes->item(0)->parentNode->removeChild($nodes->item(0));}
$content = $dom->saveHTML();
我的dom结构中有多个metadata
和mw-editsection
类,我想删除所有元数据和mw-editsection类
像
<body>
...
<div class="metadata"> abc </div>
<div class="mw-editsection"> xyz </div>
...
<div class="metadata"> 123 </div>
<div class="metadata"> 456 </div>
<div class="metadata"> 789 </div>
<div class="mw-editsection"> abc </div>
...
</body>
我想删除所有这些内容。
答案 0 :(得分:0)
您的XPath使用逻辑and
,但您的示例表明您需要逻辑or
。使用and
只会选择div
元素,例如<div class="metadata mw-editsection"/>
,您的示例中没有显示任何元素。