mooch: Ersetzen mit JavaScript...

Hallo!

Ich schreibe gerade ein Formular mit dem Benutzer Eintraege auf einer Seite erstellen koennen. Das Ganze funktioniert mit PHP. Jedoch biete ich die Moeglichkeit an, den Eintrag vor seiner Veroeffentlichung als Vorschau nochmals ansehen zu koennen. Dies basiert auf JavaScript. Nun kannst du aber verschiedene Schriftfarben fuer deinen Text waehlen und JavaScript aendert dies zu HTML-Code. Beispiel:

der Benutzer gibt an:
Bla bla [C|#ff0000]Dieser Text ist rot[/C] bla bla.
Javascript anedert dies um zu:
Bla bla <span style="color:#ff0000;">Dieser Text ist rot[/span] bla bla.

Doch nun zu meinem Problem: Ich biete allerdings mehrere Farben zur Auswahl und finde es zu umstaendlich fuer jede Farbe ein eigenes Script zu schreiben (ersetze "[C|#ff0000]" mit "<span style="color:#ff0000;">", "[C|#00ff00]" mit "<span style="color:#00ff00;">" etc.) und wollte fragen ob es nicht eine einfache Moeglichkeit gibt alle folgenden Strings "[C|#"[6 Buchstaben/Zahlen]"]" mit "<span style="color:#"[6 Buchstaben/Zahlen]";">" zu ersetzen. Dabei moechte ich die [6 Buchstaben/Zahlen] uebernehmen und nicht einfach "[C|#" mit "<span style="color:#" ersetzen. Ist dies auf eine nicht allzu komplexe Art moeglich?

Ich hoffe, meine Fragestellung ist klar genug. Bin dankbar um jede Antwort.

mfg

  1. Hi!

    Ist dies auf eine nicht allzu komplexe Art moeglich?

    Ich weiß nicht, was du unter "allzu komplexer Art" verstehst.
    Mit Hilfe von regulären Ausdrücken ist dein Problem lösbar.
    Eventuell setzt du in PHP auch einen RegEx ein..?

    Schau dir mal die Funktion replace() an.

    Schöner Gruß,
    rob

    1. Hallo!

      Herzlichen Dank fuer die Antwort. Mein Problem ist wie gesagt nicht das "Finden" des String, sondern das Ersetzen. So finde ich den String zwar, indem ich die [6 Buchstaben/Zahlen] mit einem regulaeren Ausdruck angebe, weiss aber nicht, wie ich sie beim Ersetzen auch wieder einsetzen kann. Stellte mir dies in einer Art so vor:
      Ersetze "[C|#",var code,"]" mit "<span style="color:#",var code";">". Dabei sollte aber eben diese "var code" flexibel fuer alle Kombinationen sein.
      Ich hoffe meine Fragestellung ist nun klarer.

      mfg

      1. Heyho Hohey!

        Mal sehen... Das klingt fuer mich wie ein Job fuer str_replace! Dort fliegt es ja auch schon!

        1. Heyho Hohey!

          Mal sehen... Das klingt fuer mich wie ein Job fuer str_replace! Dort fliegt es ja auch schon!

          Mann... Ich hab mich zuviel mit php beschaeftigt... Sorry dafuer! *endlich sein we will*

      2. Hi!

        Ersetze "[C|#",var code,"]" mit "<span style="color:#",var code";">". Dabei sollte aber eben diese "var code" flexibel fuer alle Kombinationen sein.
        Ich hoffe meine Fragestellung ist nun klarer.

        Du hast dir keinen von den Links angesehen, die ich gepostet habe, oder?

        Schöner Gruß,
        rob

        1. Ups...
          Habe nochmals genauer hingesehen. Nun ist mir alles klar und es funktioniert.
          Nochmals herzlichen Dank!
          mfg

  2. Hallo zusammen!
    Nun habe ich doch ein zweites Problem und zwar folgendes:

    JavaScript:
    var text = text.replace(/[C|[]]/g,'<span style="color:#$1;">');

    var text - vorher:
    hallo[C|0000ff]huhu[/C]hallo

    var text - nachher:
    hallo[C<span style="color:#0000ff;">huhu</span>hallo

    Wieso wurde diese "[C" nicht, aber "|" doch ersetzt?!

    mfg

    1. Ach, schon zum zweiten Mal "Ups..." :$
      Fehler gefunden, Problem geklaert.
      mfg