0

我正在使用 dom 文档扫描站点并@src从内部img元素接收属性。

html是:

  <div class="content">
    <div class="post">
      <img src="abc"/>
    </div>
    <div class="post">
      <img src="abc1"/>
    </div>
    <div class="post">
    </div>
  </div>

注意:我特别没有@src在我的xpath. 此外,这正是我需要编码的方式。

这是我的php:

$document = new DOMDocument();
$document->loadXML($file);
$XPath = new DOMXPath($document);
$Query = '//div[@class="content"]//div[@class="post"]';

$posts = $XPath->query($Query);

foreach ($posts as $post) {
    if($XPath->evaluate("@src", $post))
    {
        $return[] = $XPath->evaluate("@src", $post)->item(0);
    }else{
        $return[] =  "";
    }
}

它正在向数组添加位置,$return但它们都是空数组位置。

我的问题是如何让它从 php 代码中输出数据:

$return[] = $XPath->evaluate("@src", $post)->item(0); 

这不起作用:

$return[] = $XPath->evaluate("@src", $post)->item(0)->nodeValue; 
4

1 回答 1

1

.//@src[1]

  • . => 相对于节点
  • //@ => 后代
  • @src=> src 属性
  • [1] => 第一个。

如果您只关心值,您甚至可以使用string(nodeset)(当然,如果您需要能够操纵属性并使用您的->item(0)解决方案,请忽略它)。

foreach ($posts as $post){
    $return[] = $XPath->evaluate("string(.//@src[1])",$post);
}
于 2013-10-15T19:07:44.960 回答