在采集数据的时候,发现如果采集对象中存在繁体字,无论是采集还是后台编辑添加,都无法完成,相关字符串都会在繁体字出被自动截断,有点惹人恼。
更烦恼的是调用:charset.helper.php,中的函数big52gb,竟然无法转换,不知道是big5-gb.dat库(这个库,打开后很乱)的问题,还是big52gb函数的问题,反正是无法实现替换功能。
如果你也遇到了这个问题,那么,就继续往下看:
为了解决这个问题,我们新写个简单的转换函数,以及一个简单的简体繁体字符库:
function BIG5ToGB($Text)
{
$filename = “/very68.com.big5.gb.dat”;
$fp = fopen($filename, “rb”);
$BIG5_DATA = fread($fp,filesize($filename));
fclose($fp);
$BIG5_STR = explode(‘$$’,$BIG5_DATA);
//新增过滤后判断,解决遇到汉字与字母混排替换出错问题
$FilterText = preg_replace(“/-|_|/|[|]|(|)|{|}|./”,”,$Text);
$FilterText = preg_replace(“/[0-9]|[a-z]/i”,”,$FilterText);
for($i=0;$i<count($BIG5_STR);$i++)
{
$BIG5_iSTR = explode(‘$’,$BIG5_STR[$i]);
if(strstr($FilterText,$BIG5_iSTR[0]))
{
$Text = str_replace($BIG5_iSTR[0],$BIG5_iSTR[1],$Text);
}
else
{continue;}
}
return $Text;
}
其中需要的简体繁体字字库的文件:very68.com.big5.gb.dat,是存放简体字和繁体字的对照表,格式如下:
“ 賊$贼$$亂$乱$$師$师$$個$个 ”
字符串长度随意,只要是你需要替换的,你都可以加进来[ 如果您要现成的very68.com.big5.gb.dat字库,就请在原文评论处留下邮箱,24小时内发给您 ]。
追加说明:繁体字库,昨天抽了半天时间终于编辑完毕,有需要的兄弟姐妹请留下您的邮箱即可!
2013/08/08日修正,解决替换部分字母与汉字混排时替换出错问题!
再次声明:本函数主要是解决字符串部分替换的问题,真要用于全文替换,请您留言,俺再给你找解决方案。
举个应用实例吧:
假如说您copy的文章中既含有繁体字,又含有简体字,那么要转换为简体的话,那么就可以稍微修改下article_add.php,
找到:
//处理body字段自动摘要、自动提取缩略图等
$body = AnalyseHtmlBody($body,$description,$litpic,$keywords,’htmltext’);
修改为:
//处理body字段自动摘要、自动提取缩略图等
$body = BIG5ToGB($body); //就是增加了一句过滤而已
$body = AnalyseHtmlBody($body,$description,$litpic,$keywords,’htmltext’);