2016-12-30 6 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()rel значения атрибута, и сравните результат нижнего регистра буквального "canonical" (отформатировано для удобства чтения):

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

 Смежные вопросы

  • Нет связанных вопросов^_^