这是我的HTML:
<div class="content">
<div class="post">
<p class="imgcontent">
<img src="hello.jpg"/>
</p>
</div>
<div class="post">
<p></p>
</div>
<div class="post">
<p class="imgcontent">
<img src="hello1.jpg"/>
</p>
</div>
</div>
这是我的XPATH:
//div[@class="content"]//div[@class="post"]//@src
结果如下:
[0] => hello.jpg
[1] => hello1.jpg
我想要的是:
[0] => hello.jpg
[1] => ""
[2] => hello1.jpg
正如您所看到的,代码应该有3个数组位置,因为有3个“post”类div。
我知道使用XPATH可能无法实现这一点,但是可能有一个PHP解决方案吗?
答案 0 :(得分:0)
我不知道它会如何出现在php中但是跟随xpath
//div[@class="content"]//div[@class="post" and not(.//@src)] | //div[@class="content"]//div[@class="post"]//@src
似乎返回了所需的数据
答案 1 :(得分:0)
这是如何在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("//p//@src", $post))
{
$return[] = $XPath->evaluate("//p//@src", $post)->item(0);
}else{
$return[] = "";
}
}