微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在PHP中完全替换所有特殊字符而不在结果中留下任何HTML实体

我需要帮助我正在尝试创建的PHP替换函数.

基本上,我想FYLLY转换所有特殊字符,如á,é,í,ó,ú,ü,ñ,Á,É,Í,Ó,Ú,Ü,Ñ等等到这个:a,e,i, o,u,u,n,A,E,I,O,U,U,N.下面解释了为什么我说“FULLY convert”.

现在我只使用以下功能设法做到了这一半:

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

MysqL或浏览器中查看时,这一乍一看给了我想要的结果,所以在PHP中:

$string = "Ábalos";
echo clean_url($string);

HTML页面代码输出:Abalos.这看起来乍看之下.

但是,当我这样做

$string = "Ábalos";
echo htmlentities(clean_url(($string));

HTML页面代码输出:A& Acirc;?balos.

我希望能够用我的功能替换那部分& Acirc ;?.
怎么能实现这一目标?

解决方法:

我找到了这个函数(在这个帖子中:How to remove accents and turn letters into “plain” ASCII characters?):

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

我测试了一些字符串并且它有效.例如 :

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

$string = "Ábalos";

echo toASCII($string);

将打印Abalos

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐