Einzelnen Beitrag anzeigen

Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#1

RegEx o.ä. - Problem

  Alt 12. Aug 2007, 18:26
Hi!

Ich versuche mein Problem mal zu umreißen...

Es geht um die "Programmierung" eines Online WYSIWYG-HTML-Editors mittels JavaScript / PHP. Es gibt da zwar zig fertige, aber allen fehlt eine wichtige Eigenschaft: der Verzicht auf [b][i] o.ä.
Ziel ist die also die Nachrüstung, die aus o.g. Tags die CSS-Entsprechungen baut. Grundlage ist der Editor TinyMCE, aber das tut wohl an sich nichts zur Sache.

Was super funktioniert ist das Umwandeln der Tags zu <span>. Dazu folgende RegEx:

Code:
value = value.replace(/[b]/g, "<span style='font-weight: bold'>");
value = value.replace(/<\/strong>/g, "<\/span>");
Natürlich kann der Editor aber die <span>-Formatierungen nicht weiter bearbeiten. Also müssen diese wieder zurückgeführt werden in [b] bzw. entsprechende Tags.

Und da liegt der Haken! Wie ich es auch angehe, gehts schief:
Erste Idee:

Code:
value = value.replace(/<span style='font-weight: bold'>([a-z]*)<\/span>/g, '[b]$1[/b]');
Das funktioniert (wie ja eigentlich beabsichtigt) nur, wenn zwischen dem Anfangs- und dem Endtag die Zeichen a-z vorkommen. Wird also der Text zwischendrin noch anders formatiert (z.B. <span style='font-style: italic'>Text</span>) schlägt die RegEx fehl, da ja bspw. < nicht zu den erlaubten Zeichen gehört.

Also anderer Gedanke, zwischen Anfangs und Endtag einfach alles erlauben: (.+)
Der Haken folgt auf dem Fuß, da wird dann natürlich als Text zwischen Anfangs- und Endtag alles betrachtet, was zwischen dem Anfangstag und dem letzen </span> liegt. (Was man ja auch von der RegEx her verstehen kann)

Also auch nicht im Sinne des Erfinders. Jetzt gehen mir aber die Ideen aus...

Ich hoffe ihr wisst, was ich meine?! Wie kann ich diese ganzen spans wieder ordentlich umwandeln?
Ich kann den </span> ja nicht mitgeben, zu welchem Anfang sie das Ende bilden?!

Wie macht man so etwas?


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat