PHP比较字符串与重音和没有重音

时间:2014-05-06 14:59:16

标签: php string utf-8

在PHP中是否可以比较字符串:

Æther == AEther == Aether

我想从这个等价

得到积极的结果

我实际上尝试了多项但却没有取得真正的成功:

  • 用strtr替换Æ和任何特殊字符到Ae(表现不好,我宁愿保持字符串不变)

  • 使用strcmp / strcasecmp,解决了上限问题,但我仍然遇到所有UTF-8字符问题

我正在努力实现它解析从json检索到的元素列表并与其他json文件匹配,有些可以拼写不同(utf8或非utf8,大写等),所以,现在,我发现这样做的唯一方法是制作第三个这样的json:

        {
        "match": {
            "name": "Unravel the \u00c6ther"
        },
        "replace": {
            "name": "Unravel the aether"
        }

我用corect替换了基本字符串,但我想找到一种自动化过程的方法。

3 个答案:

答案 0 :(得分:11)

您可以使用iconv的音译功能:

iconv('utf8', 'ASCII//TRANSLIT', 'Æther') == 'Aether';

某些Windows系统可能需要使用'utf-8'而不是'utf8'。

答案 1 :(得分:2)

你需要写一个功能。 我给你两个提示:

  • 用strtolower
  • 的Levenshtein

这两项功能可以帮助你入门;)

答案 2 :(得分:-1)

为什么不用str_replace()用AE替换Æ。然后使用'strtolower()'将两个字符串转换为小写并比较...