包含带有重音符号或字符的文本的 XPath 元素选择
XPath element selection containing a text with accents or characters
我想使用 XPath (Symfony Dom Crawler) select 一个 element/div 标签:
$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[=10=]E9 f[=10=]E9 rence
R%C3%A9f%C3%A9rence
RU+00E9fU+00E9rence
R0xE9f0xE9rence
您没有指定您使用的是哪个 XPath 实现,并且因为 filterXpath 在 PHP 中是非标准的,我首先要检查的是编码。 PHP 脚本的保存编码是否与对象所期望的编码相同?
我要尝试的第二件事是使用 DOMDocument 的标准 XPath 实现,但还有其他实现。
$oDom = (new DOMImplementation())->createDocument(NULL, '');
// import your DOM here
$XPath = new DOMXPath($oDom);
$XPath->query('//span[text() = "Référence"')->item(0);
我想使用 XPath (Symfony Dom Crawler) select 一个 element/div 标签:
$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[=10=]E9 f[=10=]E9 rence
R%C3%A9f%C3%A9rence
RU+00E9fU+00E9rence
R0xE9f0xE9rence
您没有指定您使用的是哪个 XPath 实现,并且因为 filterXpath 在 PHP 中是非标准的,我首先要检查的是编码。 PHP 脚本的保存编码是否与对象所期望的编码相同?
我要尝试的第二件事是使用 DOMDocument 的标准 XPath 实现,但还有其他实现。
$oDom = (new DOMImplementation())->createDocument(NULL, '');
// import your DOM here
$XPath = new DOMXPath($oDom);
$XPath->query('//span[text() = "Référence"')->item(0);