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]

私が達成しようとしているのは、取得するように明示的に述べたものだけを取得することです。2 番目の Xpath ( (//div[@class="content"]//div[@class="post"]//@src)[1]) を使用すると、最初の img src のみが提供され、それだけです (すべての div 投稿要素の最初のものではありません)。

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 に答える