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.