kostenloser Webspace werbefrei: lima-city


PHP Umlaut Filter. geht bei Usereingabe nicht.

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    Hallo LC,
    Ich habe mir einen Umlaut Filter gebastelt:

    $umlaute = Array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/");
    $replace = Array("ae","oe","ue","Ae","Oe","Ue","ss");
    $user2 = str_ireplace($umlaute, $replace, $user);

    aber leider funktioniert das nicht?!
    Der Filter überprüft die Eingabe eines Users.
    Wenn ich es so teste geht es:
    $user ="ä";
    $umlaute = Array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/");
    $replace = Array("ae","oe","ue","Ae","Oe","Ue","ss");
    $user2 = str_ireplace($umlaute, $replace, $user);

    aber wenn ich das aus einem Formular bekomme nicht.
    Woran kann das liegen bzw. wie kann ich das lösen?
    LG
    Christian


    PS: geht nicht soll heißen: er ersetzt die umlaute einfach nicht.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hi Christian1603,

    es ist nur ein erster Verdacht meinerseits - also nicht als Expertenmenung Missverstehen ;)

    Bist du dir ganz sicher, dass aus deinem Formular auch ein "ä" ankommt? Ich frage einfach weil ja bei der übertragung der Daten die Sonderzeichen und Umlaute normalerweise Codiert werden.
    Also ein Zeichen je nach Zeichensatz entsprechend umgesetzt wird. Somit könnten die Daten aus dem Formular ja trotz Eingabe des ä ja schon in ein "&auml" verwandelt worden sein.

    <?php
    $str = "Ein 'Anführungszeichen' ist <b>fett</b>";
    // Gibt aus: Ein 'Anf&uuml;hrungszeichen' ist &lt;b&gt;fett&lt;/b&gt;
    echo htmlentities($str);
    // Gibt aus: Ein &#039;Anf&uuml;hrungszeichen&#039; ist &lt;b&gt;fett&lt;/b&gt;
    echo htmlentities($str, ENT_QUOTES);
    ?>

  4. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    mh...
    das ist mein Formular
    <form method=\"POST\">
    Gib deinen Namen ein (A-Z, 0-9): <input type=\"text\" name=\"user\"/>
    <input type=\"submit\" name=\"button\" value=\senden\" />
    </form>

    Wenn ich die eingabe ausgebe kommt ä und im quelltext steht auch ä
  5. ja ... also wie gesagt ich bin da nicht 100% sicher ... aber würde dich jetzt einfach auch mal auf eine andere Seite verweisen.
    http://www.w3schools.com/tags/ref_urlencode.asp

    "URLs can only be sent over the Internet using the ASCII character-set."
    Damit ergibt sich einfach, dass dein String den du dann auf Serverseite auswertest einfach schon kein "ä" mehr beinhaltet. Es werden halt alle Sonderzeichen für das Versenden im Browser ersetzt, und wenn du irgendwann einen String später zurückbekommst entsprechend auch wieder "zurückübersetzt".
  6. Ähm, htmlentities haben hier mit gar nix zu tun, und das URL-Encoding wird auch von PHP automatisch rückgängig gemacht beim "entpacken" des Query-Strings.

    Ich vermute hier eher, dass der Zeichensatz von deinem PHP-Script nicht mit dem übereinstimmt, in dem der Browser die Daten sendet. Vermutlich ist dein Script in UTF8 kodiert, während der Browser mit ISO-8859-1 rumhantiert. Hier hilft entweder manuell umkodieren (utf8_decode, iconv o.ä.), oder einfach dafür sorgen, dass alles einheitlich mit einem Zeichensatz läuft (am besten UTF8).
  7. theseven schrieb: Ähm, htmlentities haben hier mit gar nix zu tun, und das URL-Encoding wird auch von PHP automatisch rückgängig gemacht beim "entpacken" des Query-Strings.

    Ich vermute hier eher, dass der Zeichensatz von deinem PHP-Script nicht mit dem übereinstimmt, in dem der Browser die Daten sendet. Vermutlich ist dein Script in UTF8 kodiert, während der Browser mit ISO-8859-1 rumhantiert. Hier hilft entweder manuell umkodieren (utf8_decode, iconv o.ä.), oder einfach dafür sorgen, dass alles einheitlich mit einem Zeichensatz läuft (am besten UTF8).

    Hey,
    füge das mal ein
    header('Content-Type:text/html; charset=UTF-8');

    LG

    Beitrag zuletzt geändert: 14.4.2010 20:05:26 von schuelerhc
  8. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    Danke Schonmal für die vielen antworten.
    Es geht aber immer noch nicht.
    kann man in php bei einer variable diereckt UTF8 "einbauen".
    LG
  9. @christian1603
    ... Es geht aber immer noch nicht.
    mal auch schon probiert?:
    $umlaute = array("ä","ö","ü","Ä","Ö","Ü","ß");
    ich verstehe eben nicht, was die slashes dabei bedeuten sollen. oder stehe ich gerade mit beiden füßen auf dem logischen schlauch!?
  10. Autor dieses Themas

    christian1603

    Kostenloser Webspace von christian1603

    christian1603 hat kostenlosen Webspace.

    czibere schrieb: @christian1603
    ... Es geht aber immer noch nicht.
    mal auch schon probiert?:
    $umlaute = array("ä","ö","ü","Ä","Ö","Ü","ß");
    ich verstehe eben nicht, was die slashes dabei bedeuten sollen. oder stehe ich gerade mit beiden füßen auf dem logischen schlauch!?

    Cool danke jetzt geht es!
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!