好吧,我在同一个任务中,过了一会儿我发现在 xpath 中没有对此的支持,安静令人失望!但是,我们总是可以解决它!
我想要一些简单而直接的东西。我附带的是为撇号设置您自己的替换,这是一种独特的代码(您在 xml 文本中不会遇到的东西),例如,我选择了 //apos//。现在你把它放在你的 xml 文本和你的 xpath 查询中。(如果你不是总是写 xml,我们可以用任何编辑器的替换功能替换)。现在我们怎么办?我们用这个正常搜索,检索结果,然后将 //apos// 替换回 '.
下面是我正在做的一些示例:(replace_special_char_xpath() 是你需要做的)
function repalce_special_char_xpath($str){
$str = str_replace("//apos//","'",$str);
/*add all replacement here */
return $str;
}
function xml_lang($xml_file,$category,$word,$language){ //path can be relative or absolute
$language = str_replace("-","_",$language);// to replace - with _ to be able to use "en-us", .....
$xml = simplexml_load_file($xml_file);
$xpath_result = $xml->xpath("${category}/def[en_us = '${word}']/${language}");
$result = $xpath_result[0][0];
return repalce_special_char_xpath($result);
}
xml文件中的文本:
<def>
<en_us>If you don//apos//t know which server, Click here for automatic connection</en_us> <fr_fr>Si vous ne savez pas quelle serveur, Cliquez ici pour une connexion automatique</fr_fr> <ar_sa>إذا لا تعرفوا أي سرفير, إضغطوا هنا من أجل إتصال تلقائي</ar_sa>
</def>
以及 php 文件中的调用(生成的 html):
<span><?php echo xml_lang_body("If you don//apos//t know which server, Click here for automatic connection")?>