#php #xpath
#php #xpath
Вопрос:
Я пытаюсь сопоставить простую подстроку в атрибуте класса элемента p, но получаю ошибки:
$pElements = $crawler2
->filter(
"p[contains(@class, 'price')]");
// Expected operator, but <delimiter "(" at 10> found
// "descendant-or-self::p[contains(@class, 'price')");
// Unexpected pseudo-element "::p" found not at the end of a selector
Префикс во 2-м (прокомментированном) операторе выбора, который я получил отсюда: https://symfony.com/doc/current/components/css_selector.html
Я использую эту библиотеку с Goute на PHP для очистки веб-страниц.
Из ошибок (в журнале ошибок сервера) похоже, что xpath неисправен. Кто-нибудь может увидеть ошибку?
Комментарии:
1.
Unexpected pseudo-element "::p" found
… Вы уверены, что вашаfilter
функция выполняет запрос XPath?2. Нет, это, вероятно, причина тогда. Очистка для меня в новинку, поэтому я буду более осторожен в этом, спасибо
Ответ №1:
Прежде всего, у вас нет закрывающей ]
скобки
, попробуйте эту строку: "p[contains(@class, 'price')]"
в filter
функции
Комментарии:
1. Вы правы, я сейчас починю пост. Я скопировал / вставил ваш пересмотренный код и все равно получаю:
[Tue Apr 09 07:02:53.367451 2019] [php7:notice] [pid 8338] [client 127.0.0.1:59068] PHP Fatal error: Uncaught Symfony\Component\CssSelector\Exception\SyntaxErrorException: Expected operator, but <delimiter "(" at 10> found.