我如何使 Xpath 1.0 查询不区分大小写
How do i make Xpath 1.0 query case insensitive
在 PHP 中,我目前正在进行 xpath 查询,但我需要使其不区分大小写。
我使用的是 XPath 1.0,从我的查询来看,这意味着我必须使用一些叫做翻译函数的东西,但我不确定如何做到这一点。
这是我的查询测试 PHP 文件:
$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);
如有任何帮助,我们将不胜感激。谢谢
基本上,translate 用于将您需要比较的动态值转换为全部小写(或全部大写)。在这种情况下,您希望将 translate()
应用于 rel
属性值,并将结果与小写文字 "canonical"
(为了便于阅读而格式化)进行比较:
//link[
translate(@rel, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'canonical'
]
在 PHP 中,我目前正在进行 xpath 查询,但我需要使其不区分大小写。 我使用的是 XPath 1.0,从我的查询来看,这意味着我必须使用一些叫做翻译函数的东西,但我不确定如何做到这一点。
这是我的查询测试 PHP 文件:
$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);
如有任何帮助,我们将不胜感激。谢谢
基本上,translate 用于将您需要比较的动态值转换为全部小写(或全部大写)。在这种情况下,您希望将 translate()
应用于 rel
属性值,并将结果与小写文字 "canonical"
(为了便于阅读而格式化)进行比较:
//link[
translate(@rel, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'canonical'
]