Seite 1 von 1

Highlight-Funkion

Verfasst: 14.11.2005 23:03
von PhilippK
Hallo zusammen,

Hat jemand eine schöne RegEx-Funktion, mit der ich bestimmte Textpassagen hervorheben kann, ohne dass HTML-Tags geändert werden?

Eigentlich handelt es sich um eine klassische Aufgabe: in einem Text sollen bestimmte Textpassagen hervorgehoben werden. Dafür habe ich auch einige Ansätze gefunden, die mich zu folgendem Code gebracht haben:

Code: Alles auswählen

preg_replace("#\b(wort1|wort2)\b#i", '<span class="highlight">$1</span>', $text)
Das Problem dabei: auch das, was in einem HTML-Tag steht (also z.B. href) wird geändert.
Das habe ich nun etwas weiterentwickelt, und bin bei folgendem Code gelandet:

Code: Alles auswählen

preg_replace("#(>[^<]*\b|^[^<>]*\b)(wort1|wort2)(\b[^>]*<|\b[^<>]*\$)#i", '$1<span class="highlight">$2</span>$3', $text)
Nun ersetzt PHP zwar das, was es soll - aber nur einmal. Kommen mehrere hervorzuhebende Passagen vor, so wird nur ein Wort ersetzt.
Hat jemand da eine schöne Expression, die das Problem löst?

Viele Grüße und Danke,

Philipp

Verfasst: 15.11.2005 12:29
von Gast210225
phpBB hat ja auch eine Highlight Funktion, ich weiß aber nicht, in welcher Datei nun der passende Code ist :wink:

Verfasst: 15.11.2005 12:38
von Dr.Death
In der viewtopic.php ist der Code zu finden....

Verfasst: 15.11.2005 16:33
von PhilippK
Das hilft mir nur bedingt, da die nicht ausschließlich mit Regular Expressions arbeitet.

Viele Grüße,

Philipp