Ich habe mir viele Gedanken über die Programmierung einer Klasse für HTML-Hightlightning gemacht, die ein Kunde gerne für seine Foren hätte und bin bei einem entscheidenden Problem hängen geblieben.
Wenn ich die Tags durch Ersatzzeichen austausche und mit font-Angaben ergänze, nutze ich preg_replace und einen regulären Ausdruck á lá
Nun muss ich aber verhindern dass innerhalb des zu ersetzenden Tags der gleiche nochmal vorkommt, da sonst z.B. bei Kommentaren große Probleme auftauchen, die soweit logisch klar sind. Denn für Kommentare suche ich immer die Kommentar-Blöcke in denen dann der HTML-Code direkt in Ersatzzeichen umgewandelt wird, so dass später kein weiteres Hightlightning im einheitlich grauen Kommentar-Teil vorkommen kann.
Mit dem reg. Ausdruck
Der angewendete preg_match_all gibt nun als ersten Fund den gesamten Codeblock zwischen dem ersten auftauchenden "<!--" und dem letzten auftauchenden "-->" zurück. Das ist auch logisch...aber mein Problem.
Wie kann ich innerhalb eines Regulären Ausdruckes das vorkommen einer Zeichenkette verbieten? Einzelne Zeichen kann ich mittels eckiger Klammern ([^zeichen]) beliebig rausnehmen ... nur finde ich weder mit Google noch in Foren-Suchen eine Lösung wie ich eine Zeichenkette innerhalb des Ausdruckes verbieten kann.
Schonmal thx für die Antworten falls das verständlich ausgedrückt war und ansonsten bitte auch per ICQ(121713822) melden.
So long,
Dominik
Wenn ich die Tags durch Ersatzzeichen austausche und mit font-Angaben ergänze, nutze ich preg_replace und einen regulären Ausdruck á lá
PHP-Code:
"/<a(.*)>(.*)<\/a>/"
Mit dem reg. Ausdruck
PHP-Code:
"/<!--.*-->/"
Wie kann ich innerhalb eines Regulären Ausdruckes das vorkommen einer Zeichenkette verbieten? Einzelne Zeichen kann ich mittels eckiger Klammern ([^zeichen]) beliebig rausnehmen ... nur finde ich weder mit Google noch in Foren-Suchen eine Lösung wie ich eine Zeichenkette innerhalb des Ausdruckes verbieten kann.
Schonmal thx für die Antworten falls das verständlich ausgedrückt war und ansonsten bitte auch per ICQ(121713822) melden.
So long,
Dominik
Kommentar