2016-12-30 31 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' 
]