1

这是我的 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 解决方案?

4

2 回答 2

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[] =  "";
    }
}
于 2013-10-14T19:58:51.710 回答
0

我不知道它会如何出现在 php 但遵循 xpath

//div[@class="content"]//div[@class="post" and not(.//@src)] | //div[@class="content"]//div[@class="post"]//@src

似乎返回所需的数据

于 2013-10-14T19:49:27.980 回答