phpjunky: Eurozeichen automatisch codieren?

Hallo zusammen

Ich hab folgendes Problem, bei dem ich hoffe ihr könnt mir weiterhelfen:

Ich habe mit PHP & einer Mysql Datenbank ein kleines CMS Tool erstellt und wandle beim Speichern von Eingaben diverse Zeichen in den passenden HTML Code (mit str_replace)um.

Also z.B. die Eingabe "Dies & Das" wird zu & quot;Dies & amp; Das& quot; (ohne Leerzeichen natürlich) - was auch problemlos funktioniert

Probleme gibts wie in der Überschrift bereits angerissen mit dem Eurozeichen. Es steht zwar eine ähnliche Angabe wie beim und-Zeichen also suche nach € und ersetze es mit & euro; - Nur hat das irgendwie keine Wirkung.

Woran könnte das liegen?

(wenn ihr noch weitere Angaben brauchts bitte sagen!)

Vielen Dank für eure Hilfe!

Mfg phpjunky

  1. Hallo,

    Probleme gibts wie in der Überschrift bereits angerissen mit dem Eurozeichen. Es steht zwar eine ähnliche Angabe wie beim und-Zeichen also suche nach € und ersetze es mit & euro; - Nur hat das irgendwie keine Wirkung.

    Vermutung: Dein PHP benutzt einen anderen Zeichensatz als der sendende PC. Hast du auch Probleme mit den Umlauten?

    Kalle

    1. Vermutung: Dein PHP benutzt einen anderen Zeichensatz als der sendende PC. Hast du auch Probleme mit den Umlauten?

      Umlaute wandle ich bisher nicht um (mir gehts hauptsächlich darum die Warnings beim Validator wegzubringen)

      Ich hab aber die Möglichkeit gehabt meinen Code in einem neueren Dreamweaver anzuschauen und da war statt dem Euro Zeichen im Quelltext der Dübel (viereck) habs dort nochmal auf das euro Zeichen ausgebessert und seit dem scheints zu funktionieren.

      Trotzdem danke.

  2. hi,

    Ich habe mit PHP & einer Mysql Datenbank ein kleines CMS Tool erstellt und wandle beim Speichern von Eingaben diverse Zeichen in den passenden HTML Code (mit str_replace)um.

    Unsinnig.
    Wandle die Daten bei der Ausgabe um.
    Speichere Rohdaten. Wenn du die Rohdaten irgendwann noch mal brauchst/bearbeiten willst, hast du sie gleich zur Verfügung, ohne sie nochmal umständlich konvertieren zu müssen.

    Also z.B. die Eingabe "Dies & Das" wird zu & quot;Dies & amp; Das& quot; (ohne Leerzeichen natürlich) - was auch problemlos funktioniert

    Probleme gibts wie in der Überschrift bereits angerissen mit dem Eurozeichen. Es steht zwar eine ähnliche Angabe wie beim und-Zeichen also suche nach € und ersetze es mit & euro; - Nur hat das irgendwie keine Wirkung.

    Woran könnte das liegen?

    Daran, dass das Eurozeichen gar keins ist.

    Wenn du iso-8859-1 als Zeichenkodierung verwendest, ist darin das € nicht enthalten.
    Schickt dir ein Browser also Formulardaten, die ein € enthalten, in iso-8859-1 kodiert - dann bekommst du irgendwas, was in dieser Kodierung entweder gar keinen Sinn ergibt, oder auf jeden Fall nicht das €-Zeichen ist.

    Nutze eine Kodierung, die die von dir verwendete Zeichenmenge abdeckt - dann kannst du dir die Umwandlung in HTML-Entities sparen, sowohl für Umlaute als auch für's €-Zeichen (die Notwendigkeit, HTML-eigene Zeichen zu maskieren, bleibt natürlich bestehen - das erledigt htmlspecialchars).

    iso-8859-15 enthielte bspw. die deutschen Umlaute und das €-Zeichen.

    Mit "fremdländischen" Zeichen kannst du dann aber immer noch Probleme bekommen, oder auch mit den „richtigen” deutschen Anführungszeichen.

    Da hilft die Verwendung von UTF-8 weiter - was praktisch _alles_ abbilden kann.
    Der Umgang mit UTF-8 in PHP und MySQL erfordert allerdings etwas Sorgfalt und vorherige Information - aber vernünftige Gründe, heutzutage nicht UTF-8 für Seiten, auf denen Nutzereingaben angezeigt werden, zu verwenden, sind m.E. äußerst rar geworden.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }