2016-12-30 128 views
0

在PHP中,我目前正在做一个xpath查询,但我需要使它不区分大小写。 我使用的是XPath 1.0,这是从我的查询意味着我必须使用一些称为翻译功能的东西,但我不确定如何做到这一点。我如何使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); 

任何帮助将不胜感激。谢谢。

回答

2

基本上,translate用于将您需要比较的动态值转换为全部小写(或全部大写)。在这种情况下,你想申请translate()rel属性值,并将结果进行比较,以小写文字"canonical"(格式化的可读性):

//link[ 
    translate(@rel, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'canonical' 
]