【问题标题】:Convert special character (i.e. Umlaut) to most likely representation in ascii [duplicate]将特殊字符(即变音符号)转换为 ascii 中最有可能的表示 [重复]
【发布时间】:2011-10-14 23:22:01
【问题描述】:

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

例子:

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

有人知道吗?

更新: 除了公认的答案之外,我还发现 PECL Normalizer 非常有趣,尽管由于服务器没有它并且没有为我更改,我无法使用它。

如果这里的答案对您没有足够的帮助,也请查看this Question

【问题讨论】:

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

标签: php ascii special-characters diacritics non-ascii-characters


【解决方案1】:

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

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

【讨论】:

  • 虽然你可能需要使用数组,因为 "ø"="oe" 而不是 "o" :P
  • 试一试,效果很好!非常感谢!
猜你喜欢
  • 2012-08-02
  • 1970-01-01
  • 2018-11-23
  • 2012-11-16
  • 2019-09-27
  • 2015-06-03
  • 2012-06-18
  • 2013-11-29
相关资源
最近更新 更多