我正在使用以下代码在
XML文件中执行搜索:
$result = $xml->xpath("//StopPoint[contains(StopName,'$query')]");
其中$query是搜索查询,StopName是公共汽车站的名称.问题是,它区分大小写.
不仅如此,我还可以搜索ÆØÅæøå这样的非英语字符来返回挪威名字.
这怎么可能?
在XPath 1.0中(我相信,你可以用PHP SimpleXML获得最好的),你必须使用translate()函数从混合大小写输入生成全小写输出.
为方便起见,我将它包装在这样的函数中:
function findStopPointByName($xml,$query) { $upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ"; // add any characters... $lower = "abcdefghijklmnopqrstuvwxyzæøå"; // ...that are missing $arg_stopname = "translate(StopName,'$upper','$lower')"; $arg_query = "translate('$query','$lower')"; return $xml->xpath("//StopPoint[contains($arg_stopname,$arg_query)"); }
作为一种消毒措施,我要么完全禁止或者在$query中转义单引号,因为如果它们被忽略,它们将破坏你的XPath字符串.