Ben bir etiketi içinde değilse "John Doe" değiştirmek istedim, ben bu yapardı:
$str = preg_replace('/John Doe(?![^<>]*+>)/i', $new_name, $str);
(?![^<>]*+>) bir negatif ileri yönlü olduğunu; "her köşeli öncesinde bu nokta varsa, ilk bir ayraç değildir" diyor. Öznitelik değerleri açılı ayraçlar içerebilir beri, kusursuz değil, ama benim deneyim nadiren yapmak.
Regexes HTML ile temelden uyumsuz; Hatta lookarounds ve possessive quantifiers, genellikle gibi basitleştirerek varsayımlara dayanmak zorunda gibi preg_ suite, tarafından sunulan gelişmiş özellikler ile no angle brackets in attribute values . Ben bile çok-daha-sınırlı ereg_ fonksiyonları ile bu işi girişimi değildir.