molily: Gefundene AUsdrücke in einem Text markieren

Beitrag lesen

Mich interessiert sowohl ein Weg mit Suchen und Ersetzen, als auch eine Möglichkeit mit regulären Ausdrücken.

Reguläre Ausdrücke brauchst du nur, wenn der Kontext, in dem das Suchwort vorkommt, eine Rolle spielt und beachtet werden muss.
Trotzdem ist preg_replace angebracht, damit kannst du komfortabel nach einem String suchen und ihn in <span> und </span> einfassen. Mit $0, $1 usw. kannst du nämlich im Ersatz-String auf die Treffer und Teiltreffer, d.h. das gefundene Wort zugreifen und es wieder einsetzen. Und mit dem i-Flag kannst du unabhängig von Groß- und Kleinschreibung suchen.

preg_replace('~(Wort)~i', '<span class="found">$1</span>')

Das kannst du natürlich jetzt noch verbessern, z.B. indem "Wort" freistehend sein muss, sonst wäre auch "verantworten" ein Treffer (verant<span class="found">wort</span>en). Dazu kannst du dir mal \W ansehen, das du vor und nach die Klammer stellen könntest.

Schwieriger wird es, wenn du HTML-Formatierungen hast und der Text nicht in HTML-Tags gefunden werden soll, siehe: http://php-faq.de/q-regexp-ersetzen.html

Mathias