PHP HTML etiketlerini kaçınarak Düzenli İfadeler,

0 Cevap php

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)

0 Cevap