包含带重音符或字符的文本的XPath元素选择

时间:2017-05-14 13:41:49

标签: php symfony xpath symfony-components

我想使用XPath(Symfony Dom Crawler)选择元素/ div标签:

$element->filterXPath('//span[text() = "SOMEtext"]')->text();

如果字符串中没有特殊字符,它可以正常工作。 如果字符串包含重音符或字符,例如:Prénomexpé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

1 个答案:

答案 0 :(得分:2)

你没有指定你正在使用哪个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);