我正在使用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;
答案 0 :(得分:1)
.//@src[1]
:
.
=&gt;相对于节点//@
=&gt;后代@src
=&gt; src属性[1]
=&gt;第一个。如果您只关心价值,您甚至可以使用string(nodeset)
(当然,如果您需要能够操纵属性并使用->item(0)
解决方案,请将其保留)。
foreach ($posts as $post){
$return[] = $XPath->evaluate("string(.//@src[1])",$post);
}