2017-05-14 58 views
0

我想通過使用XPath(Symfony Dom Crawler)選擇一個元素/ div標籤口音或字符的文本的XPath元素的選擇:

​​

如果有字符串中沒有特殊字符,它工作正常。 如果字符串包含重音或如字符它不會工作: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 

回答

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); 
+0

對不起,我忘了提及我正在使用Symfony DomCrawler組件(通過composer require)。我現在會嘗試你的代碼 – aspirinemaga

+0

問題出在html源代碼中!一些帶有口音的詞被剝奪了,其中一些詞沒有。 而不是'Référence' - 我得到了'Rférence'。我不明白爲什麼。 – aspirinemaga

+0

謝謝你,我在嘗試使用你的代碼時能夠發現我的問題的核心。 – aspirinemaga