2016-12-30 1 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' 
] 
関連する問題