web-dev-qa-db-ja.com

XPathクエリ:タグから属性hrefを取得する

XPathを使用してhrefタグからa属性を取得したいのですが、同じファイル内に2つのオカレンスがあります。どうやってやっているの?値が$ street/objectのhref属性があるかどうかを確認する必要があります。このコードがあり、動作しません:

$product_photo     = $xpath->query("//a[contains(@href,'{$object_street}fotos/')][1]");
        $product_360       = $xpath->query("//a[contains(@href,'{$object_street}360-fotos/')][1]");
        $product_blueprint = $xpath->query("//a[contains(@href,'{$object_street}plattegrond/')][1]");
        $product_video     = $xpath->query("//a[contains(@href,'{$object_street}video/')][1]");

何も返しません。誰が私を助けてくれますか?

34
user3239713

次のHTMLドキュメントの場合:

<html>
  <body>
    <a href="http://www.example.com">Example</a> 
    <a href="http://www.stackoverflow.com">SO</a> 
  </body>
</html>

Xpathクエリ/html/body//a/@href(または単に//a/@href)は以下を返します:

 http://www.example.com 
 http://www.stackoverflow.com 

特定のインスタンスを選択するには、/html/body//a[N]/@hrefを使用します。

 $ /html/body//a[2]/@href
 http://www.stackoverflow.com 

属性に含まれる文字列をテストし、属性自体を返すには、属性ではなくタグにチェックを入れます。

 $ /html/body//a[contains(@href,'example')]/@href
 http://www.example.com 

2つの混合:

 $ /html/body//a[contains(@href,'com')][2]/@href
 http://www.stackoverflow.com 
68
mockinterface