Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP如何合并2个查询_Php_Xml_Dom_Xpath_Xpath 2.0 - Fatal编程技术网

PHP如何合并2个查询

PHP如何合并2个查询,php,xml,dom,xpath,xpath-2.0,Php,Xml,Dom,Xpath,Xpath 2.0,我有以下两个问题: 1)获取图像的所有URL: $imgs = $xpath->query('//div[@class="pin"]/div[@class="PinHolder"]/a/img'); foreach($xpath->query('//span[@class="LikesCount"]') as $span) { $int = (int) $span->nodeValue; if ($int > 5) { echo $i++

我有以下两个问题:


1)获取图像的所有URL:

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


2)获取facebook喜欢每张图片的人数:

$imgs = $xpath->query('//div[@class="pin"]/div[@class="PinHolder"]/a/img');
foreach($xpath->query('//span[@class="LikesCount"]') as $span) {
    $int = (int) $span->nodeValue;
    if ($int > 5) {
        echo $i++ . "--> " . $int . "<br />";
    }
}
foreach($xpath->query('//span[@class=“likescont”]”)作为$span){
$int=(int)$span->nodeValue;
如果($int>5){
echo$i++.“-->.”$int.“
”; } }


我想将它们合并,以获得facebook喜欢超过5次的图像 也就是说,不受欢迎的图片根本就没有LikeCount类

下面是标记的一个示例:

<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>

[...]

22喜欢 6列宾

[...]
要检索的不是所有图像,而是likes计数为5或更多的图像,我会尝试将赋值中的XPath表达式更改为
$imgs
,如下所示:

//div[@class="pin"]
     [.//span[@class = 'LikesCount']
             [substring-before(normalize-space(.),' ') > 5]]
     /div[@class="PinHolder"]
     /a/img
(我添加了空格以使其更容易理解;如果XPath解析器在这方面不符合规范,您可能需要删除换行符[有些不符合])


我不清楚为什么cbuckley说这需要XPath2.0;也许他在这里看到了一些我没有看到的微妙问题。

我已经为您正确地设置了问题的格式。你为什么老是把它恢复过来?对不起,第一天在这里。。非常感谢。请提供完整的输入XML(提供的XML不包含
div[@class=“PinHolder”]
您将需要XPath 2.0,但类似于
//div[@class=“pin”]/p/span[@class=“likescoount”]][5]之前的子字符串/祖先::div[@class=“pin”]/a/img
应该可以作为一个开始。@Geo:再说一遍,你为什么要还原我的格式?我不喜欢重复我自己!谢谢你,McQueer,但我仍然不知道如何打印/处理xpath的输出。它是数组、单个字符串还是DOM元素?我到底在搞什么鬼:D和这个查询-->//span[@class=“likescoount”][规范化空间()]从XPath的角度来看,我给出的XPath表达式对XML文档中的一组节点求值。给定的编程语言和库对它们使用的表示形式取决于它们,而不是XPath。上面说,如果您知道如何处理现有的在查询时,您应该知道如何处理重新格式化的查询结果。(如果不知道,您似乎对PHP的DOM库有疑问,而不是XPath。)表达式
//span[@class='likescoount']
将每个
span
元素与值为“
likescoount
属性相匹配。添加谓词
[normalize space(.)]
将结果进一步限制为表达式
对其规范化空格(.)的
span
元素
的计算结果为true。因此,谓词具有过滤掉任何空的或只包含空格的
span
元素的效果。注意,
返回的值规范化空格(.)
用于计算谓词,然后将其丢弃:它对返回的DOM节点没有任何影响。丢弃???这就是为什么我会抓狂,我没有得到它!因此,如果我想计算“规范化”值,我必须1)在xpath查询中对其求值,或者2)在php中对其求值,再次手动去除空白!谢谢你,McQueenIt当然可以编写一个xpath表达式,其求值结果为规范化值(从而将规范化值返回给调用者),但不是在将其包装到谓词中时。如果这感觉很棘手,您可能会受益于对XPath的良好介绍。