Как я могу сделать нечувствительное к регистру сравнение внешнего вида ключевого слова в моем контенте в сценарии ниже?Нечувствительный к регистру текст() сравнение с DOMdocument?
Если я использую это ...
$keyword = strtolower(rseo_getKeyword($post));
$nodes = $x->query("//text()[
contains(
translate(.,'ABCDEFGHJIKLMNOPQRSTUVWXYZ',
'abcdefghjiklmnopqrstuvwxyz'),
'$keyword')
Замена осуществляется только по ключевому слову соответствует в содержании, уже в нижнем регистре. Похоже, что он делает нечувствительный к регистру поиск.
$keyword = rseo_getKeyword($post);
$content = $postarray['post_content']; //error: Empty string supplied in loadHTML() when I use this.
//$content = "this is a test phrase";
@$d = new DOMDocument();
@$d->loadHTML($content);
@$x = new DOMXpath($d);
@$nodes = $x->query("//text()[contains(.,'$keyword')
and not(ancestor::h1)
and not(ancestor::h2)
and not(ancestor::h3)
and not(ancestor::h4)
and not(ancestor::h5)
and not(ancestor::h6)]");
if ($nodes && $nodes->length) {
$node = $nodes->item(0);
// Split just before the keyword
$keynode = $node->splitText(strpos($node->textContent, $keyword));
// Split after the keyword
$node->nextSibling->splitText(strlen($keyword));
// Replace keyword with <b>keyword</b>
$replacement = $d->createElement('b', $keynode->textContent);
$keynode->parentNode->replaceChild($replacement, $keynode);
}
echo $d->saveHTML();die;
Довольно много дубликатов http://stackoverflow.com/questions/625986/how-can-i-use-xpath-to-perform-a-case-insensitive-search-and-support-non-english – rik
@rik , Я попытался заменить маршрутизацию перевода на мой xquery (и обновил свой вопрос с этой информацией), но когда я это сделаю, замена не производится вообще. –
Возможный дубликат [нечувствительный к регистру xpath поиск в php] (http://stackoverflow.com/questions/3238989/case-insensitive-xpath-searching-in-php/3240155#3240155) – Gordon