Xpath / PHP: проблемы с сопоставлением подстроки класса

#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.