0

这是我的 HTML:

<div class="content">
    <div class="post">
        <img class="img" src="getme"/> (<~~ retrieve this one)
        <img class="img" src="notme"/>
        <img class="img" src="notme"/>
    </div>
    <div class="post">
        <img class="img" src="getme"/> (<~~ retrieve this one)
        <img class="img" src="notme"/>
        <img class="img" src="notme"/>
    </div>      
</div>

这是我使用的 XPATH:

     //div[@class="content"]//div[@class="post"]//@src[1]
     (//div[@class="content"]//div[@class="post"]//@src)[1]

我想要完成的是只检索我明确声明要检索的那些。当我使用第二个 Xpath ( (//div[@class="content"]//div[@class="post"]//@src)[1]) 时,它只提供第一个 img src,仅此而已(不是每个 div post 元素的第一个)

4

1 回答 1

2

使用以下 xpath 查询:

//div[@class="post"]/img[1]/@src

例子:

$html = <<<EOF
<div class="content">
    <div class="post">
        <img class="img" src="getme"/> (<~~ retrieve this one)
        <img class="img" src="notme"/>
        <img class="img" src="notme"/>
    </div>
    <div class="post">
        <img class="img" src="getme"/> (<~~ retrieve this one)
        <img class="img" src="notme"/>
        <img class="img" src="notme"/>
    </div>    
</div>
EOF;

$doc = new DOMDocument();
@$doc->loadHTML($html);

$selector = new DOMXPath($doc);

foreach($selector->query('//div[@class="post"]/img[1]/@src') as $node) {
    var_dump($node->nodeValue);
}

输出:

string(5) "getme"
string(5) "getme"
于 2013-10-13T21:30:59.017 回答