str_replace() funktioniert nicht, wie erwünscht

tklustig

Erfahrenes Mitglied
Hallo Leute, ich habe folgende Methode zum Ersetzen von Zeichen geschrieben:
PHP:
    public function clear_string($str) {
        var_dump($str);
        $search = array("ä", "ö", "ü", "ß", "Ä", "Ö",
            "Ü", "&", "é", "á", "ó",
            "^", "|", "(", ")", "[", "]",
            "/", "`", "´", "'",
            "²", "³",
            "\\", "~", "#", ":P");
        $replace = array("ae", "oe", "ue", "ss", "Ae", "Oe",
            "Ue", "und", "e", "a", "o",
            "_", "_", "_", "_", "_", "_",
            "_", "_", "_", "_",
            "_", "_",
            "_", "_", "_", "_");
        $str = str_replace($search, $replace, $str);
        var_dump($str);
        die();
        return $str;
    }
die var_dumps() geben folgendes aus:
Code:
string(12) "AW:Prüfung" string(11) "AW_rüfung"

Wie man sieht, wird der erste Treffer durch _ ersetzt. Warum aber wird das ü nicht ersetzt??:eek:
 
Zuletzt bearbeitet:
Okay. Funktioniert jetzt. Der übergebene String war durch das Encodingproblem https://www.tutorials.de/threads/stringvergleich.406671/ nicht so, wie er auf dem Bildschirm dagestellt wird. Habe das jetzt so gelöst:
PHP:
    public function clear_string($str) {
        $str = utf8_decode($str);
        $search = array("a?", "o?", "u?", "ß", "A?", "O?", "U?",
            "?",
            "^", "|", "(", ")", "[", "]",
            "/", "`", "´", "'",
            "²", "³",
            "\\", "~", "#", "�");
        $replace = array("ae", "oe", "ue", "ss", "Ae", "Oe", "Ue",
            "ue",
            "Ue", "und", "e", "a", "o",
            "_", "_", "_", "_", "_", "_",
            "_", "_", "_", "_",
            "_", "_",
            "_", "_", "_", "_");
        $str = str_replace($search, $replace, $str);
        return $str;
    }

Jetzt habe ich die Übereinstimmung!
 
Nur um sicher zu gehen: $str ist garantiert im ISO-8859-1 Encoding, oder? Sonst ist die Nutzung von utf8_decode falsch.
 
Zurück