Ben uzun bir HTML dize içinde bulunursa anahtar kelimeler için bir bağlantı eklemek için preg_replace kullanıyorum. Ben anahtar kelime h1 etiketi veya güçlü etiketleri içinde bulunursa bir bağlantı eklemek istemiyorum.
Aşağıdaki regex neredeyse çalışır ve temelde (sanırım) diyor ki: Anahtar kelime hemen h1 etiketi veya güçlü bir etiketi ya tarafından sarılmış değilse o zaman google bir kalın bağlantı olarak, eşleşti anahtar kelime ile değiştirin.
$result = preg_replace('%(?!<h1>)(?!<strong>)\b(bobs widgets)\b(?!<\/strong>)(?!<\/h1>)%i','<a href="http://www.google.com"><strong>$1</strong></a>', $result, -1);
(Anahtar kelime bir çok ile recursing çünkü ben eğer güçlü etiketleri maç istemiyorum nedeni böylece sonraki geçişte zaten bağlantılı anahtar bağlamak istemiyorum)
ve ince yukarıdaki eserler maç olmayacak:
<h1>bobs widgets</h1>
H1 etiketi hemen anahtar kelime ya da bir yan değil çünkü Ancak, aşağıdaki metinde anahtar kelime maç olacak:
<h1>Here are bobs widgets for sale</h1>
Ben alanlarda yan isteğe bağlı ya da yapmak gerekir ve \ s ekleyerek denedim * ama her yerde beni almaz. Ben burada doğru yönde bir itme için çok minnettar olurum.