Nc_Soft: не работает, сейчас экспериметирую:
$text = <<Man Gnoy artrit in the text
Some text about artrit.
There are many types of side. Gnoy artrit may be other side.
Non gnoy artrit
Anoter text gnoy artrit side.
Some ending text.
Non gnoy artrit
Anoter text of gnoy artrit side.
Some ending text.
EOT;
$d = new DOMDocument();
$d->loadHTML($text);
$x = new DOMXpath($d);
foreach($x->query("//text()[
contains(.,'gnoy artrit')
and not(ancestor::h1)
and not(ancestor::h2)
and not(ancestor::h3)
and not(ancestor::h4)
and not(ancestor::h5)
and not(ancestor::h6)
and not(ancestor::a)]") as $node){
// Split just before the keyword
$keynode = $node->splitText(strpos($node->textContent, 'gnoy artrit'));
// Split after the keyword
$node->nextSibling->splitText(strlen($keyword));
// Replace keyword with keyword
$replacement = $d->createElement('strong', $keynode->textContent);
}
print_r($d->saveHTML());
Мне надо ключ обернуть в тег a, это для seo, поэтому jQuery не подходит, надо на PHP сделать, пробую сейчас на DOM+xPath, но не получается до конца дописать.
Я беру его из БД. str_replace не подходит, у меня словосочетание может в тегах h1-h2 и а встречаться, а в них менять не надо, а вот в остальном коде надо поменять первое вхождение.