Подтвердить что ты не робот

XPath Query: получить атрибут href из тега

Я хочу использовать XPath для получения атрибута href из a -tag, но он имеет два вхождения в одном файле. Как я лажу? Мне нужно проверить, есть ли атрибут href со значением $street/object, у меня есть этот код, и он не работает:

$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]");

Он ничего не возвращает. Кто может мне помочь?

4b9b3361

Ответ 1

Для следующего документа HTML:

<html>
  <body>
    <a href="#" onclick="location.href='http://www.example.com'; return false;">Example</a> 
    <a href="#" onclick="location.href='http://www.stackoverflow.com'; return false;">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

Смешивание двух:

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