PHP如何合并2个查询

时间:2012-12-10 22:02:01

标签: php xml dom xpath xpath-2.0

我有这两个查询:


1)获取图片的所有网址:

$imgs = $xpath->query('//div[@class="pin"]/div[@class="PinHolder"]/a/img');



2)获取每个图像的Facebook喜欢的人数

foreach($xpath->query('//span[@class="LikesCount"]') as $span) {
    $int = (int) $span->nodeValue;
    if ($int > 5) {
        echo $i++ . "--> " . $int . "<br />";
    }
}


我想将它们合并,以获得已被Facebook喜欢的图像超过5次 也就是说,没有被喜欢的图片根本没有LikesCount类。

按照标记示例:

<div class="pin">

[...]

<a href="/pin/56787645270909880/" class="PinImage ImgLink">
    <img src="http://media-cache-ec3.pinterest.com/upload/56787645270909880_d7AaHYHA_b.jpg" 
         alt="Krizia" 
         data-componenttype="MODAL_PIN" 
         class="PinImageImg" 
         style="height: 288px;">
</a>

<p class="stats colorless">
    <span class="LikesCount"> 
        22 likes 
    </span>
    <span class="RepinsCount">
        6 repins
    </span>
</p>

[...]

</div>

1 个答案:

答案 0 :(得分:1)

要检索并非所有图像,只检索like-count为5或更多的图像,我会尝试将作业中的XPath表达式更改为$imgs以读取:

//div[@class="pin"]
     [.//span[@class = 'LikesCount']
             [substring-before(normalize-space(.),' ') > 5]]
     /div[@class="PinHolder"]
     /a/img

(我添加了空格以使其更容易理解;如果您的XPath解析器不遵循此问题中的规范,则可能需要消除换行符[有些不这样做]。)

我不清楚为什么cbuckley说这需要XPath 2.0;也许他在这里看到一些微妙的问题,我不知道。