Dennis: Suchen mit preg_replace

Beitrag lesen

Hi Andü,

Ich versuche in einem HTML-Quelltext nach allen Vorkommen, von einem bestimmtem Suchmuster zu suchen und diesen dann durch eine Markierung hervorzuheben. Logischerweise möchte ich nicht, dass HTML-Tags davon in Mitleidenschaft gezogen werden.

HTML Tags würde doch eigentlich nur dann in Mitleidenschaft gezogen, wenn jemand z.B. "span" als Suchbegriff angibt, richtig?

Mein bisheriges Suchmuster ist folgendes:

preg_replace ("#(^<*)($suchbegriff)(^>*)#","<span style='background-color: #FB6615; color: #FFFFFF;'>&nbsp;$2&nbsp;</span>",$text);

Doch damit funktioniert es nicht so wie ich mir das vorstell!

[x] Du möchtest uns eine genauere Fehlerbeschreibung liefern.

Mal überlegen - vor dem Suchbegriff darf kein < stehen ohne von einem > gefolgt zu werden. Wenn das klar gestellt ist, muss man eigentlich nach dem Suchbegriff gar nicht mehr weiter kontrollieren (vorrausgesetzt du hast schon länst kontrolliert, dass im Suchbegriff keine < und > enthalten sind).

Um das richtig[tm] intelligent umzusetzten müsste man das wohl mit Conditional Subpatterns umsetzen.

Es würde aber vielleicht auch reichen, wenn man nur prüft, ob davor ein > kommt und danach kein < mehr:

#>[^<]*($suchbegriff)#

Probier mal ein bisschen rum.

MfG, Dennis.

--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Mit Gesetzen ist es wie mit Würstchen - es ist besser, wenn man nicht weiß, wie sie gemacht werden. (Otto v. Bismarck)