新闻中心

帝国cms教程:关于utf-8下中文tags搜索不到的问题

作者 / 无忧主机 时间 2015-11-07 11:53:43

最近发现一些php空间用户反映的问题,在帝国cms(empirecms)使用中,在utf-8下遇到中文tags会搜索不到。在网上查了很多相关资料。原来是UTF-8编码下中文tags搜索不到是因为编码的缘故,因此要进行支付转换。但是又不知道改如何对userfun.php 进行修改。在网上询问了很多高手,在高手的指点下,了解到了urlencode的用法之后对原userfun.php 简单修改了下,现在支持UTF-8 的中文tags搜索,解决UTF-8下中文tags搜索不到的问题。 解决方法很简单: 在userfun.php 中,将输出网址进行中文转码,就像在百度,Google 那样将输入字符进行编码转换。比如这是原userfun.php 显示本文tags的语句:

$tagslink=$public_r[newsurl]."e/search/?searchget=1&tbname=$tbname&tempid=$tempid&show=keyboard&keyboard=".$r[$i]; //链接
其中‘ $r[$i] ’是原有的网址后缀,分析前台tags代码时可以得知:
http://www.xxx.com/e/search/?searchget=1&tbname=news&tempid=1&show=keyboard&keyboard=帝国
上面的‘帝国’只是举个例子,这里可得知前台tags "帝国" = 后台"$r[$i] , 前台试验了下在Google 搜索‘帝国’,将返回地址中帝国的编码替换到上面网址实例中进行搜索请求,结果返回了正确的搜索结果,不会像之前直接中文时老是返回搜索不到。参照前面高手在博客中的范例,只要对后面输出地址进行转码就行:
$tagslink=$public_r[newsurl]."e/search/?searchget=1&tbname=$tbname&tempid=$tempid&show=keyboard&keyboard=".urlencode($r[$i]); //链接
直接将输出结果$r[$i]进行转码,结果中文tags对应的搜索链接地址变成了:
http://www.xxx.com/e/search/?searchget=1&tbname=news&tempid=1&show=keyboard&keyboard=%E5%B8%9D%E5%9B%BD
至此看出测试成功。虽然有点麻烦,但还是希望官网能够做相关插件及应用的时候对两种编码全面考虑,不然你出个UTF8而没有可广泛应用的内容=没用 ! 无忧主机相关文章推荐阅读: 帝国CMS快速入门教程:新增专题的方法 帝国CMS快速入门教程:如何修改首页模板 帝国CMS怎么把首页自带的INDEX.HTML去掉

本文地址:https://www.51php.com/empirecms/20599.html

1
1
1
1
1
1
1

客户服务热线

0791-8623-3537

在线客服