加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何使用XPath执行不区分大小写的搜索并支持非英语字符?

发布时间:2020-12-13 13:08:34 所属栏目:PHP教程 来源:网络整理
导读:我正在使用以下代码在 XML文件中执行搜索: $result = $xml-xpath("//StopPoint[contains(StopName,'$query')]"); 其中$query是搜索查询,StopName是公共汽车站的名称.问题是,它区分大小写. 不仅如此,我还可以搜索??????这样的非英语字符来返回挪威名字. 这怎
我正在使用以下代码在 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字符串.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读