Highlight-Funkion

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Highlight-Funkion

Beitrag 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
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Gast210225

Beitrag von Gast210225 »

phpBB hat ja auch eine Highlight Funktion, ich weiß aber nicht, in welcher Datei nun der passende Code ist :wink:
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

In der viewtopic.php ist der Code zu finden....
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Das hilft mir nur bedingt, da die nicht ausschließlich mit Regular Expressions arbeitet.

Viele Grüße,

Philipp
Kein Support per PN!
Der Sozialstaat ist [...] eine zivilisatorische Errungenschaft, auf die wir stolz sein können. Aber der Sozialstaat heutiger Prägung hat sich übernommen. Das ist bitter, aber wahr. (Horst Köhler)
Meine Mods
Antworten

Zurück zu „Coding & Technik“