1. #1

    Registriert seit
    18.11.2011
    Beiträge
    457
    Thanked 296 Times in 94 Posts
    Blog Entries
    1

    Standard [PHP] Umlaute parsen

    Ich bräuchte für ein Projekt von mir ein Script, das Umlaute eines Satzes in ae etc umwandelt, bevor diese in eine Datenbank geschrieben werden. Ich habe da schon etwas gebastelt, das allerdings nicht funktioniert.

    Code:
    if($_GET['action'] == "add") {
            $question = htmlspecialchars(htmlentities(trim(mysql_real_escape_string($_GET['q']))));
            $ip = $_SERVER['REMOTE_ADDR'];
            $answer = htmlspecialchars(htmlentities(trim(mysql_real_escape_string($_GET['a']))));
            $umlaute = array("ä", "ü", "ö");
            $insteadumlaute = array("ae", "ue", "oe");
            $filteredanswer = str_replace($umlaute, $insteadumlaute, $answer);
            $filteredquestion = str_replace($umlaute, $insteadumlaute, $question);
            $sql = "INSERT INTO `questions` SET `question` = '$filteredquestion', `answer` = '    $filteredanswer', `ip` = '$ip'";
            mysql_query($sql);
        }
    Ich sehe nichts falsches, aber die Umlaute werden nicht replaced und in der Datenbank steht als Antwort dann z.B. folgendes:
    Rumänien

    Es sollte Rumänien heißen, replaced dann Rumaenien. Weiß einer warum?

  2. #2
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.081
    Thanked 9.119 Times in 2.996 Posts
    Blog Entries
    5

    Standard AW: Umlaute parsen

    htmlentities wandelt alle Zeichen zu denen es einen HTML-Code gibt in ihre entsprechenden HTML-Codes um.
    Du musst also entweder die entsprechenden HTML-Codes (SELFHTML: HTML/XHTML / Referenz /HTML-Zeichenreferenz) zum ersetzen nutzen oder einfach erst Ersetzen und dann htmlentities() aufrufen.

    Btw: htmlspecialchars() brauchst du nicht zusätzlich wenn du htmlentities() nutzt.
    htmlspecialchars() wandelt nur Sonderzeichen um, htmlentities() alle zu denen es einen HTML-Code gibt.


  3. The Following User Says Thank You to DMW007 For This Useful Post:

    Pwned (27.12.2012)

  4. #3

    Registriert seit
    18.11.2011
    Beiträge
    457
    Thanked 296 Times in 94 Posts
    Blog Entries
    1

    Standard AW: Umlaute parsen

    Wenn ich htmlentities() weglass, funktioniert das mit den Umlauten schon mal. Allerdings funktioniert das scharfe s nicht, dort wird noch ß ausgegeben. Gibt es was, das ich hier beachten muss? Über diverse Suchmaschinen habe ich keine Lösung gefunden.

  5. #4
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.081
    Thanked 9.119 Times in 2.996 Posts
    Blog Entries
    5

    Standard AW: Umlaute parsen

    Codier mal den String

    PHP-Code:
    $filteredanswer utf8_encode($filteredanswer); 


  6. #5

    Registriert seit
    18.11.2011
    Beiträge
    457
    Thanked 296 Times in 94 Posts
    Blog Entries
    1

    Standard AW: [PHP] Umlaute parsen

    Funktioniert nicht, es wird ß ausgegeben. Ich dachte mir, das ß eventuell mit ss replacen, da es beim Knuddels-Quiz ja keine Rolle spielt, ob man ß oder ss schreibt. Schöner wäre es aber trotzdem mit ß

  7. #6
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.081
    Thanked 9.119 Times in 2.996 Posts
    Blog Entries
    5

    Standard AW: [PHP] Umlaute parsen

    Ist dein Ausgabescript denn auch UTF8-Codiert gespeichert?
    Kann man in praktisch jedem Texteditor irgendwo einstellen.
    Notepad++ hat dafür zb einen eigenen Menüpunkt



    Ich würde zudem die Kodierung immer auch im HTML-Dokument setzen

    PHP-Code:
    <meta charset="utf-8" /> 


  8. #7

    Registriert seit
    17.12.2011
    Beiträge
    97
    Thanked 37 Times in 27 Posts

    Standard AW: [PHP] Umlaute parsen

    PHP-Code:
    function replace($string)
    {
        
    $_umlauts = array('ä''ö''ü');
        
    $_replace_umlauts = array('ae''oe''ue');
        
        
    $replaced str_replace($_umlauts$_replace_umlauts$string);
        
        print 
    $replaced;
    }

    replace('ich hösse ängrybürds'); 
    Oben habe ich gelesen, das du das so lösen wolltest.

    Ich würde es aber auch wie DMW lösen.
    Geändert von Integer (29.12.2012 um 11:51 Uhr)

Ähnliche Themen

  1. VB.Net Json String richtig parsen???
    Von soulreafer im Forum .Net
    Antworten: 1
    Letzter Beitrag: 06.07.2013, 17:15
  2. vBulletin - Umlaute werden als ? dargestellt
    Von Devon im Forum Web-Applications
    Antworten: 4
    Letzter Beitrag: 03.02.2013, 13:41
  3. Befehle "parsen"
    Von Frankfurt am Main im Forum Knuddels Allgemein
    Antworten: 2
    Letzter Beitrag: 22.10.2012, 15:32
  4. :-Token (Module) parsen/schreiben
    Von Brainy im Forum Sourcecode
    Antworten: 3
    Letzter Beitrag: 11.07.2012, 20:01
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.