如何将特殊字符替换为PHP中基于的特殊字符?

如何更换:

  • “ã” 与 “a”
  • “é” 与 “e”

在 PHP 中?这可能吗?我已经在某个地方读到过,我可以用基本字符的ascii值和重音的ascii值做一些数学运算,但我现在找不到任何参考。


答案 1

如果您无权访问 Normalizer 类,或者只是不想使用它,则可以使用以下函数来替换大多数(所有?)常见重音。

function Unaccent($string)
{
    return preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8'));
}

答案 2

这个答案是不正确的。当我写它时,我不理解Unicode规范化。看看弗兰卡达瓦尔的评论和链接

请查看规范化程序类以执行此操作。文档很好,所以我只是链接它,而不是在这里重复一些事情:

http://www.php.net/manual/en/class.normalizer.php

具体而言,该类的规范化成员:

http://www.php.net/manual/en/normalizer.normalize.php

请注意,Unicode 规范化有几种形式,您似乎想要规范化形式 KD (NFKD) 兼容性分解,尽管您应该阅读文档以确保。

你不应该为此尝试滚动自己的函数:有太多的事情可能会出错,使用提供的函数是一个更好的主意。


推荐