snoot: Frage zu einem regulären Ausdruck

Beitrag lesen

Hi,

ich lasse mit preg_replace Wörter nur außerhalb von Tags ersetzen (damit es z.B. Links nicht zerschießt):

"/((<[^>]*)|$search_str)/ie" (http://php-faq.de/q-regexp-ersetzen.html)

Jetzt würde ich gerne, dass nur ganze Wörter ersetzt werden, dafür gibt es ja den Modifier \b. Ist es korrekt, diesen wie folgt einzubauen:

"/((<[^>]*)|\b$search_str\b)/ie"

Soweit ich es sehe funktioniert es, aber vermutlich finde ich in ein paar Tagen wieder eine Situation, wo das nicht der Fall ist :)

Vielleicht könnte mir auch jemand erklären, wie der komplette Ausdruck genau arbeitet, denn wirklich durchschauen kann ich ihn nicht:

~~~php // $s case-insensitive in $t hervorheben:
  preg_replace("/((<[^>]*)|$s)/ie", '"\2"=="\1"? "\1":"<b>\1</b>"', $t);

  
  
Danke schon mal.