在我的PHP腳本中,我使用XPATH搜索文本節點。一切都會順利進行 - 除了我用撇號搜索單詞時。php xpath處理撇號/搜索文本中的單引號
基本上我的代碼看起來像這樣
$keyword = $_GET['keyword'];
...snip...
$xml = simplexml_load_file($data);
$search = strtolower($keyword);
$upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$lower = "abcdefghijklmnopqrstuvwxyz";
$nodes = $xml-xpath("//line[contains(translate(text(),'$upper','$lower'),'$search')]");
再次,上述所有代碼的偉大工程 - 我可以搜索內部節點的字符串,我得到了正確的比賽回來。
但是,如果一個節點是這樣的: <line number="23">Shall I compare thee to a summer's day?</line>
,我尋找夏天的一天......我得到上述$nodes
線路故障。更重要的是,如果我搜索「...夏天」(不是),上面的行不匹配。獲得上述線路的唯一方法是尋找「......夏天」 - 其中包括夏天。
我試過stripslashes,addslashes,tohellwithslashes,htmlspecialchars但沒有任何工作。此外,根據谷歌,在XPATH 1.0(我被迫使用,因爲這是PHP),我將永遠不能逃脫撇號。真的嗎?
所以我轉向這裏的天才,有人必須必須處理一個XML文件,他們需要用PHP中的XPATH遍歷有一個apostraphe!如果XPATH無法做到這一點,我可以在PHP中做些什麼來讓XPATH返回這個節點?
謝謝(再次)。你的代碼中有一個小小的錯字(如果你希望爲別人的befefit編輯它)是'xml-xpath'應該是'xml-> xpath'(你忘了>)。此外,在我的情況下,我需要改變另一件事,以獲得撇號被識別。從我上面發佈的代碼中,我改變了'$ search = strtolower($ keyword);'到'$ search = stripslashes(strtolower($ keyword));否則進入'夏天'實際上變成'夏天'。希望我這樣做並沒有弄髒別的東西!太感謝了。 – dijon 2010-07-18 16:41:06