Я хочу выбрать тег элемента / div с помощью XPath (Symfony Dom Crawler):
$element->filterXPath('//span[text() = "SOMEtext"]')->text();
Работает нормально, если в строке нет специальных символов.
Это не будет работать, если строка содержит акценты или символы, такие как: Prénom
, expérience
, à toi
, так далее.
$element->filterXPath('//span[text() = "Référence"]')->text();
дает мне ошибку.
Есть ли способ отфильтровать неанглийский текст?
Я перепробовал много комбинаций, чтобы преобразовать текст в строку Unicode, но это всегда не получается.
Référence
Référence
R\u00E9f\u00E9rence
R\u{00E9}f\u{00E9}rence
R\00E9 f\00E9 rence
R%C3%A9f%C3%A9rence
RU+00E9fU+00E9rence
R0xE9f0xE9rence
Вы не указали, какую реализацию XPath вы используете, и поскольку filterXpath не является стандартным в PHP, первое, что я проверю, это кодирование. Является ли кодировка, в которой сохранен ваш PHP-скрипт, той же кодировкой, которую ожидает объект?
Во-вторых, я бы попробовал использовать стандартную реализацию XPath DOMDocument, но есть и другие реализации.
$oDom = (new DOMImplementation())->createDocument(NULL, '');
// import your DOM here
$XPath = new DOMXPath($oDom);
$XPath->query('//span[text() = "Référence"')->item(0);
Других решений пока нет …