将特殊字符(即Umlaut)转换为ascii中最可能的表示形式

And*_*erj 8 php ascii diacritics special-characters non-ascii-characters

我正在寻找一个方法或转换表,知道如何将变音符号和特殊字符转换为ascii中最可能的表示形式.

例:

Ärger = aerger
Bôhme = bohme
Søren = soeren
pjérà = pjera
Run Code Online (Sandbox Code Playgroud)

有人有什么想法?

更新:除了良好的接受答案,我还发现PECLs Normalizer非常有趣,虽然我不能使用它,因为服务器没有它并且没有为我更改.

如果此处的答案对您没有帮助,请查看此问题.

neo*_*kio 15

我发现iconv完全不可靠,我不喜欢preg_match解决方案和大阵列......所以我最喜欢的方式是......

    function toASCII( $str )
    {
        return strtr(utf8_decode($str), 
            utf8_decode('ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ'),
            'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy');
    }
Run Code Online (Sandbox Code Playgroud)