замена специальных символов не работает


Я написал этот метод для замены специальных символов:

function replace_sonder($string)
    {
        $string2 = str_replace("ä", "ä", $string);
        $string2 = str_replace("%E4", "ä", $string2);
        $string2 = str_replace("ö", "ö", $string2);
        $string2 = str_replace("%F6", "ö", $string2);
        $string2 = str_replace("ü", "ü", $string2);
        $string2 = str_replace("%FC", "ü", $string2);
        $string2 = str_replace("Ä", "Ä", $string2);
        $string2 = str_replace("%C4", "Ä", $string2);
        $string2 = str_replace("Ö", "Ö", $string2);
        $string2 = str_replace("%D6", "Ö", $string2);
        $string2 = str_replace("Ü", "Ü", $string2);
        $string2 = str_replace("%DC", "Ü", $string2);
        $string2 = str_replace("ß", "ß", $string2);
        $string2 = str_replace("%DF", "ß", $string2);
        return $string2;
    }

Он всегда возвращает ту же строку,которую я передаю. Где я что-то упускаю или есть альтернативный способ сделать это?

2 2

2 ответа:

$string = preg_replace("/ä/", "ä", $string);
...

Но лучший способ-это:

$string = htmlentities($string, ENT_QUOTES);

Проверьте, что вывод, который вы сравниваете, не является HTML-страницей, так как он преобразует символы обратно.