Intereting Posts
Как я могу подавить предупреждения PHPCS с помощью комментариев? PHP Postgres PDO драйвер не поддерживает подготовленный оператор? Как использовать определенный порт для отправки или получения обновлений через webhook для телеграммы? Я хочу добавить строковые данные до первого символа и после последнего символа Ошибка Http 500 Отправка сообщения с помощью PHP54 и Twilio Двойные кавычки в эхом php-скрипте Приведение данных из PHP в D3.JS Есть ли способ увидеть подготовленный запрос, поскольку он будет выполнен в базе данных? SQL COUNT & GROUP BY какова разница между представлением и задачей в joomla 2.5 и что такое структура url в joomla 2.5? Как проверить, какие расширения PHP были включены / отключены в Ubuntu Linux 12.04 LTS? Использование jQuery для отправки данных из multipart / form-data через ajax MailChimp API 3.0 пакетная / массовая подписка Получите данные на стене или стене группы facebook для использования на личном веб-сайте Laravel 5.3 Ограничение надежных нагрузок не работает

PHP Xpath: получить все значения href, содержащие иглу

Работа с PHP Xpath пытается быстро вывести определенные ссылки на странице html.

Ниже $nodes = $x->query("//a[@href]"); все ссылки href на mypage.html: $nodes = $x->query("//a[@href]");

В то время как следующие ссылки найдут все ссылки href, где описание соответствует моей игле: $nodes = $x->query("//a[contains(@href,'click me')]");

То, что я пытаюсь достичь, является совпадением по самому href, более конкретному поиску url, которые содержат определенные параметры. Возможно ли это в запросе Xpath или я должен просто начать обработку вывода из первого запроса Xpath?

Related of "PHP Xpath: получить все значения href, содержащие иглу"

Не уверен, что я правильно понял вопрос, но второе выражение XPath уже делает то, что вы описываете. Он не совпадает с текстовым узлом элемента A, но атрибут href:

 $html = <<< HTML <ul> <li> <a href="http://example.com/page?foo=bar">Description</a> </li> <li> <a href="http://example.com/page?lang=de">Description</a> </li> </ul> HTML; $xml = simplexml_load_string($html); $list = $xml->xpath("//a[contains(@href,'foo')]"); 

Выходы:

 array(1) { [0]=> object(SimpleXMLElement)#2 (2) { ["@attributes"]=> array(1) { ["href"]=> string(31) "http://example.com/page?foo=bar" } [0]=> string(11) "Description" } } 

Как вы можете видеть, возвращаемый NodeList содержит только элемент A с href, содержащий foo (который я понимаю, это то, что вы ищете). Он связывает весь элемент, потому что XPath преобразует в Fetch все элементы A с атрибутом href, содержащим foo . Затем вы получите доступ к атрибуту с помощью

 echo $list[0]['href'] // gives "http://example.com/page?foo=bar" 

Если вы хотите только вернуть атрибут, вам нужно будет сделать

 //a[contains(@href,'foo')]/@href 

Обратите внимание, что в SimpleXml это вернет элемент SimpleXml, хотя:

 array(1) { [0]=> object(SimpleXMLElement)#3 (1) { ["@attributes"]=> array(1) { ["href"]=> string(31) "http://example.com/page?foo=bar" } } } 

но теперь вы можете вывести URL-адрес

 echo $list[0] // gives "http://example.com/page?foo=bar"