将特殊字符(如umlaut)转换为最可能的ASCII表示形式

8

我希望能找到一种方法或转换表,可以将umlauts和特殊字符转换为它们在ascii中最有可能的表示方式。

例如:

Ärger = aerger
Bôhme = bohme
Søren = soeren
pjérà = pjera

有人有什么想法吗?

更新: 除了好的被接受的答案外,我还发现 PECLs Normalizer 很有趣,但由于服务器没有它并且不为我改变,我无法使用它。

如果这里的答案不足以帮助您,请查看此问题


答案是:echo iconv('UTF-8', 'ASCII//TRANSLIT', $string); - Palantir
哦,我没有找到那个重复的答案。政策是什么?现在我应该删除我的问题还是链接到其他问题? - Andresch Serj
1
欢迎来到 Stack Overflow。这个问题已经链接到另一个问题,如果有足够的管理员(五个)投票关闭它,它将自动关闭为重复。我猜你现在不需要做任何特别的事情。 - Palantir
1
当我看到这个问题时,我笑了,因为几天前我几乎发布了完全相同的问题,在阅读了所有类似的问题后没有得到满意的答案。通过更多的谷歌搜索和试错,我找到了下面发布的答案。它可能对某些人有用 :) - designosis
@neokio,由于这个问题很可能很快就会被关闭,您是否介意回答另一个问题,以便下一个搜索此问题的人也可以享受到您的贡献?否则它将会失落... - Palantir
1个回答

15

我发现iconv完全不可靠,而且我不喜欢preg_match解决方案和大型数组...所以我最喜欢的方法是...

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

1
虽然你可能需要使用数组,因为“ø”等于“oe”,而不是“o”:P - designosis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接