Ben aslında biraz burada bu soruyu gördük, ama bunların hiçbiri tam olarak ne istediğimi ... Ben şu ifade var diyelim:
Line 1 - This is a TEST phrase.
Line 2 - This is a <img src="TEST" /> image.
Line 3 - This is a <a href="somelink/TEST">TEST</a> link.
Tamam, basit değil mi? Ben aşağıdaki kodu çalışıyorum:
$linkPin = '#(\b)TEST(\b)(?![^<]*>)#i';
$linkRpl = '$1<a href="newurl">TEST</a>$2';
$html = preg_replace($linkPin, $linkRpl, $html);
Gördüğünüz gibi, bu kelime TEST alır ve test etmek için bir link ile değiştirir. Ben şu an kullanıyorum düzenli ifade hatta 2 TEST değiştirmekten kaçınmak için iyi çalışıyor, aynı zamanda çizgi 3 href TEST değiştirilmesini önler. Ancak, yine de on line 3 etiketi içinde kapsüllü metni değiştirir ve sonum ile:
Line 1 - This is a <a href="newurl">TEST</a> phrase.
Line 2 - This is a <img src="TEST" /> image.
Line 3 - This is a <a href="somelink/TEST"><a href="newurl">TEST</a></a> link.
Bu satır 3 kötü kod oluşturur gibi bu ben istemiyorum. Ben bir etiketi içinde eşleşmeleri göz ardı etmek değil, sadece istiyorum, ama aynı zamanda onlar tarafından kapsüle. (Hatta 2 /> not tutmak için unutmayın)