Jürgen: addslashes bei html-code? geht nicht

Hallo ich bekomme aus einer Datenbank einen formatierten html-Text in der Form

<b>test info nr <font color="#16a765">2 mal </font><font size="3"><font color="#16a765">sehn was</font> jetzt </font>kommt<br></b>

ich müsste diesen String in einem data-attribut data-meinhtmltext="'.$meinstring.'" speichern

ich habe es schon mit $meinstring = addslashes($imagerow["imageDescription"]); probiert

das geht jedoch nicht

muss ich da noch was beachten ?

Grüße Jürgen

  1. Hallo Jürgen,

    ich bekomme aus einer Datenbank einen formatierten html-Text in der Form

    fertiger HTML-Code hat in der Datenbank nichts zu suchen und dass <font> mal existiert hat solltest du ganz schnell vergessen :-)

    ich müsste diesen String in einem data-attribut data-meinhtmltext="'.$meinstring.'" speichern

    ich habe es schon mit $meinstring = addslashes($imagerow["imageDescription"]); probiert

    Das ist auch die falsche Funktion um den Kontextwechsel zu beachten, du brauchst für den Wechsel nach HTML htmlspecialchars().

    Gruß,
    Tobias

    1. fertiger HTML-Code hat in der Datenbank nichts zu suchen

      im Prinzip bin ich bei dir. Doch warum soll es keine HTML-Code-Datenbank geben, Wenn ich die Datenbank ausschließlich für die Erzeugung von HTML-Code nutze?

      Da könntest du auch behaupten, Strings in deutscher Sprache gehören nicht in die Datenbank. Es könnte ja ein USAner, Franzose, Holländer, ... kommen.

      Linuchs

      1. Doch warum soll es keine HTML-Code-Datenbank geben?

        Du kennst die Angebote, in HTML-Formularen Texte farbig / bold / underscore / italic zu machen?

        Ja meinst du, damit könntest du Word-Dokumente erzeugen?

        1. Hallo Linuchs,

          im Prinzip bin ich bei dir. Doch warum soll es keine HTML-Code-Datenbank geben, Wenn ich die Datenbank ausschließlich für die Erzeugung von HTML-Code nutze?

          Wenn du das HTML ausgeben willst kannst du den Kontextwechsel nur schwer bis garnicht mehr berücksichtigen da das HTML ja dargestellt würde wenn du htmlspecialchars() verwendest. Und wer sagt dass das HTML in der Datenbank auch in Zukunft immer ausschließlich auf HTML-Seiten ausgegeben werden soll? Vielleicht willst du es ja irgendwann doch irgendwie anders verwenden?

          Da könntest du auch behaupten, Strings in deutscher Sprache gehören nicht in die Datenbank. Es könnte ja ein USAner, Franzose, Holländer, … kommen.

          Nicht alles was hinkt ist ein Vergleich.

          Du kennst die Angebote, in HTML-Formularen Texte farbig / bold / underscore / italic zu machen?

          Sicher, das geht hier ja auch - nur wird da in der Datenbank kein HTML gespeichert sondern Markdown/BBCode/WasAuchImmer.

          Ja meinst du, damit könntest du Word-Dokumente erzeugen?

          Womit? Mit z.B. Markdown? Ja, das geht - einfacher als aus HTML.

          Gruß,
          Tobias

          1. Tach!

            Wenn du das HTML ausgeben willst kannst du den Kontextwechsel nur schwer bis garnicht mehr berücksichtigen da das HTML ja dargestellt würde wenn du htmlspecialchars() verwendest.

            Das hat ja auch nicht bei der Ausgabe zu erfolgen, sondern beim Kontextwechsel. Die Ausgabe ist nicht der einzige Zeitpunkt, an dem Kontextwechsel stattfinden, wenn auch der wohl häufigste.

            Und wer sagt dass das HTML in der Datenbank auch in Zukunft immer ausschließlich auf HTML-Seiten ausgegeben werden soll? Vielleicht willst du es ja irgendwann doch irgendwie anders verwenden?

            Das liegt in der Natur von HTML. Dir geht es aber eher um die Rohdaten, die du in diesem HTML aufgegangen siehst. Das muss ja nicht der Fall sein. Ein CMS beispielsweise, das dem Anwender ermöglichst, HTML-Teile selbst einzugeben, die letztlich irgendwo im HTML der Seite landen sollen, haben selbstverständlich ihre Berechtigung, in der Datenbank gespeichert zu werden. Wo sollten sie auch sonst abgelegt werden? Die Frage ist, ob man Platzhalter braucht oder eine spezielle Syntax, um kurz vor der eigentlichen Anwendung des HTML-Snippets (zum Beispiel eine Ausgabe) noch irgendwelche Teile auszutauschen/anzupassen/einzufügen/wasauchimmer.

            Du kennst die Angebote, in HTML-Formularen Texte farbig / bold / underscore / italic zu machen?

            Sicher, das geht hier ja auch - nur wird da in der Datenbank kein HTML gespeichert sondern Markdown/BBCode/WasAuchImmer.

            Das hat aber üblicherweise andere Gründe als das generelle Vermeiden von HTML in der Datenbank. Man verwendet solche Nicht-HTML-Syntax vor allem, um Anwendern die Möglichkeiten zu beschneiden, die HTML bietet, oder um ihnen ein (vielleicht auch nur vermeintlich) einfacheres Syntax-System zur Verfügung zu stellen, als es HTML ist.

            dedlfix.