Compu: /php - htmlspecialchars

Guten Morgen,

also ich verwende seit gestern den Befehl "htmlspecialchars", um Texte aus der mysql Datenbank mit php auszugeben. Es kommen viele Deutsche Umlaute vor, diese werden wunderbar umgewandelt.

Allerdings habe ich nun im Quelltext stehen:
<h2>1. Inhalt des Onlineangebotes</h2>

Also <h2>1. Inhalt des Onlineangebotes</h2> im Browser.

Wieso nun dieses Problem?

Danke!

  1. Guten Morgen,

    Allerdings habe ich nun im Quelltext stehen:
    <h2>1. Inhalt des Onlineangebotes</h2>

    Also <h2>1. Inhalt des Onlineangebotes</h2> im Browser.

    Wieso nun dieses Problem?

    Weil durch den Befehl "htmlspecialchars" die Zeichen < und > in < bzw. > umgewandelt werden.

    Es macht generel keinen Sinn Text, in dem HTML vorkommt, mit dem Befehl "htmlspecialchars" zu behandeln.

    Gruß
    Helmut Weber

    --
    -------------------------------------------
    Mode ist eine Variable, Stil eine Konstante
    1. Guten Morgen Helmut,

      Es macht generel keinen Sinn Text, in dem HTML vorkommt, mit dem Befehl "htmlspecialchars" zu behandeln.

      Nun ich habe verschiedene Texte in der Datenbank. Diese sind natürlich mit html formatiert. Sonst hätte ich ja nun einen riesen Klump an Text ohne Überschriften,etc.
      Ich möchte halt, dass (nur) die Umlaute html gerecht dargestellt (konvertiert)werden.

      Danke

      1. Guten Morgen Helmut,

        Es macht generel keinen Sinn Text, in dem HTML vorkommt, mit dem Befehl "htmlspecialchars" zu behandeln.

        Nun ich habe verschiedene Texte in der Datenbank. Diese sind natürlich mit html formatiert. Sonst hätte ich ja nun einen riesen Klump an Text ohne Überschriften,etc.
        Ich möchte halt, dass (nur) die Umlaute html gerecht dargestellt (konvertiert)werden.

        Danke

        versuchs doch mal mit

        $bodytag = str_replace("%body%", "black", "<body text=%body%>");

        mit str_replace kannst du z.b. die umbrüche aus mehrzeiligen eingabefeldern in <p> bzw. <br> umwandeln

        ich persönlich nutze die funktion um events aus dem burning-board kalender anzuzapfen und den bb-code zu filtern.

        mfg

        bernd

        1. noch mal ne ergänzung
          ha ich weiter unten im forum gefunden

          http://forum.de.selfhtml.org/?t=50417&m=276482

      2. hi,

        Nun ich habe verschiedene Texte in der Datenbank. Diese sind natürlich mit html formatiert. Sonst hätte ich ja nun einen riesen Klump an Text ohne Überschriften,etc.
        Ich möchte halt, dass (nur) die Umlaute html gerecht dargestellt (konvertiert)werden.

        dann würde ich dir vorschlagen einen kleinen parser zu schreiben mit dem du selbst definierte tags wie z.b. [h1]überschrift[/h1] nach dem auslesen in html-tags umwandelst. was ähnliches wird hier im forum ja auch genutzt.

        gruß,
        small-step

  2. Guten Morgen Compu,

    also ich verwende seit gestern den Befehl "htmlspecialchars",
    um Texte aus der mysql Datenbank mit php auszugeben. Es kommen
    viele Deutsche Umlaute vor, diese werden wunderbar umgewandelt.

    Wieso nun dieses Problem?

    "Diese Funktion ist nützlich, um vom Benutzer gelieferten Text
      frei von HTML-Code zu halten, wie z.B. in Forums- oder
      Gästebuch-Applikationen."
    http://de.php.net/manual/de/function.htmlspecialchars.php

    Allerdings habe ich nun im Quelltext stehen:
    <h2>1. Inhalt des Onlineangebotes</h2>

    Also <h2>1. Inhalt des Onlineangebotes</h2> im Browser.

    Da solltest du dir eine Andere Loesung einfallen lassen, mit
    PHP bieten sich da einige Moeglichkeiten an. Da kann ich dir
    Besonders die preg Funktionen in PHP empfelen.

    etwa so:
      $text  = preg_replace("/ä/","ä","$text");
      $text  = preg_replace("/Ä/","&Auml;","$text");
      $text  = preg_replace("/ö/","ö","$text");
      $text  = preg_replace("/Ö/","&Ouml;","$text");
      $text  = preg_replace("/ü/","ü","$text");
      $text  = preg_replace("/Ü/","&Uuml;","$text");
      $text  = preg_replace("/ß/","ß","$text");

    http://de.php.net/manual/de/ref.pcre.php

    Das ist aber, wie du siehst, nur bei kleineren Teilmengen
    sinvoll. Wie eben bei den Deutschen Umlauten.

    gruesse
      jens mueller

    --
    Alles sollte so einfach wie möglich gemacht werden,
    - aber nicht einfacher. / Albert Einstein Physiker (1879-1955)
    1. Hallo Jens,

      Da solltest du dir eine Andere Loesung einfallen lassen, mit
      PHP bieten sich da einige Moeglichkeiten an. Da kann ich dir
      Besonders die preg Funktionen in PHP empfelen.

      für was reguläre Ausdrücke? ein str_replace() reicht hier auch...

      $text  = preg_replace("/ä/","ä","$text");
        [...]
        $text  = preg_replace("/ß/","ß","$text");

      da gefällt mir die Lösung von Sebastian weiter unten aber besser ->[pref:t=50417&m=276482]

      Grüße aus Nürnberg
      Tobias

      --
      Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
  3. hi,

    also ich verwende seit gestern den Befehl "htmlspecialchars", um Texte aus der mysql Datenbank mit php auszugeben. Es kommen viele Deutsche Umlaute vor, diese werden wunderbar umgewandelt.

    und wofür willst du diese umwandeln?
    gib einen korrekten zeichensatz an, der auch die deutschen umlaute enthält, dann kannst du dir das kodieren sparen.

    gruss,
    wahsaga