如何使Xpath 1.0查询不区分大小写 [英] How do i make Xpath 1.0 query case insensitive
问题描述
在PHP中,我目前正在执行xpath查询,但需要使其不区分大小写。我正在使用的
是XPath 1.0,根据我的查询,它意味着我必须使用一种称为转换功能的东西,但是我不确定如何执行此操作。
In PHP, I'm currently making a xpath query but I need to make it case insensitive. I'm using is XPath 1.0 which from my query means I've got to use some thing called a translate function but I'm unsure of how to do this.
这是我的查询测试PHP文件:
Here is my query test PHP file :
$html = <<<'HTML'
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta NAME="Description" content="Test Case">
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<Link Rel="Canonical" href="http://www.testsite.com/" />
<Title>My Title</Title>
</head>
<Body>
Test Case
</Body>
</html>
HTML;
$domDoc = new DOMDocument();
$domDoc->loadHTML('<?xml encoding="utf-8" ?>' . $html);
// Canonical link
$xpath = new DOMXPath($domDoc);
$canonicalTags = $xpath->query('//link[@rel=\'canonical\']'); // Return nothing
//some use translate(WhatVariable?, 'ABCDEFGHIJKLMNOPQRSTUVWXYZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞŸŽŠŒ', 'abcdefghijklmnopqrstuvwxyzàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿžšœ')
var_dump($canonicalTags);
任何帮助将不胜感激。谢谢。
Any help would be greatly appreciated. Thanks.
推荐答案
基本上,translate用于转换需要比较的动态值,使其全部为小写(或全部为小写)。大写)。在这种情况下,您想将 translate()
应用于 rel
属性值,并将结果与小写字母进行比较文字规范
(为便于阅读而设置):
Basically, translate is used to convert dynamic value that you need to compare to be all lower-case (or all upper-case). In this case, you want to apply translate()
to rel
attribute value, and compare the result to lower-case literal "canonical"
(formatted for readability) :
//link[
translate(@rel, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'canonical'
]
这篇关于如何使Xpath 1.0查询不区分大小写的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!