Bu preg_replace_callback yöntem XPath veya Xquery'nin yapılabilir?

0 Cevap php

Aşağıdaki komut $ İçeriğim'e bloğunu alır ve $ myKeyword değeri doReplace () fonksiyonu yapar. Ben sorun yedek metin etiketi içinde ya da değil zaten eğer bilmiyor olmasıdır.

Ben içinde veya adlandırılmış etiketleri (h1, h2, h3, i, u, b, güçlü, em img) nitelikleri olarak herhangi bir metin değmeyecek şekilde doReplace () işlevini değiştirmek gerekir.

Ben bir xPath yöntemi ve XPath ile yapılması konusunda öneriler arayan üzerinden bu dönüştürmek için daha iyi olacağını düşünüyorum. Yani soru şu: "Nasıl bu XPath dönüştürmek istiyorsunuz?"

Not: Ben sadece anahtar kelimenin ilk üç görünüşe yerine gidiyorum çünkü yerine fonksiyon sayısı değişken var. İlk kez o, bu italik alır ve görünür üçüncü kez, altı çizili olur bir dahaki sefere kalın alır görünür.

$myKeyword = "test keyword";

$myContent = "My content contains the "test keyword". 
Don't do the replace if the test keyword is inside:
h1, h2, h3, i, u, b, strong, em, tags. 
<h1>This test keyword would not be replaced</h1>";

$myContent = preg_replace_callback("/\b($mykeyword)\b/i","doReplace", $myContent);

function doReplace($matches)
{
    static $count = 0;
    switch($count++) {
    case 0: return ' <b>'.trim($matches[1]).'</b>';
    case 1: return ' <em>'.trim($matches[1]).'</em>';
    case 2: return ' <u>'.trim($matches[1]).'</u>';
    default: return $matches[1];
    }
}

0 Cevap