如何用php实现简体to繁体的转换,急! http://ctb.11cn.org/index.php?mods=topicdisplay&forumid=3&postid=317 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.先取得big5-gb.table档,你可在下面网址找到 http://netcity.hinet.net/kstchieh/table.zip 2.加入下列PHP程式码: function big52gb($Text){ $fp = fopen(\"big5-gb.table\", \"r\"); $max=strlen($Text)-1; for($i=0;$i<$max;$i++){ $h=ord($Text[$i]); if($h>=160){ $l=ord($Text[$i+1]); if($h==161 && $l==64){ $gb=\"\"; }else{ fseek($fp,($h-160)*510+($l-1)*2); $gb=fread($fp,2); } $Text[$i]=$gb[0]; $Text[$i+1]=$gb[1]; $i++; } } fclose($fp); return $Text; } 3.接著就可以用了 $a=\"繁体转简体\"; $a=big52gb($a); 以上程式码是最简单的方法,也就是一个一个翻,至於速度 还可以,若要快点,那就要改写一下方法了(我不是用这种方法,不过因为我的方法还在测试中,还不知稳不稳定, 所以暂时没写出来)...^^ 简体中文转换为繁体中文的PHP函数其调用方式为$txt=gbtobig5($txt)。 (注:源代码中的include "data_gb.php";这个文件在就是一个数组,在http://caocao.oso.com.cn/data_gb.zip,请编辑下载到oso上,做一个链接,因为这个文件我过几天就要删除了。) <? /*********************************************************************** Written by caocao [email protected] http://caocao.oso.com.cn With the help of Keyes [email protected] http://my-wjl.scu.edu.cn/~Keyes ***********************************************************************/ function isgb($code) { if (strlen($code)>=2) { $code=strtok($code,""); if ((ord($code[0]) < 161)||(ord($code[0]) >= 247)) { return (0); } else { if ((ord($code[1]) <= 161)||(ord($code[1]) >= 254)) { return (0); } else { return (1); } } } else { return (1); } } function gboffset($code) { if (strlen($code) >= 2) { $code=strtok($code,""); return ((ord($code[0]) - 161) * 94 + (ord($code[1]) - 161)); } else { return(-1); } } function wordtostring($code) { return (chr(hexdec(substr($code,0,2))).chr(hexdec(substr($code,2,2)))); } function gbtobig5($code) { include "data_gb.php"; $output=""; $length=strlen($code); $code=strtok($code,""); $idx=0; while ($idx < $length) { $tmpStr=$code[$idx].$code[$idx+1]; if (isgb($tmpStr)) { $offset=gboffset($tmpStr); if (($offset >= 0)||($offset <= 8177)) { $output.=wordtostring($gborder[$offset]); $idx++; } else { $output.= $code[$idx]; } } else { $output.= $code[$idx]; } $idx++; } return ($output); }; ?> 繁体中文转换为简体中文的PHP函数前几天我在oso论坛上问有没有这个源程序,没人回复。终于下定决心移植一个这样的函数,感谢网友Keyes提供移植用的Delphi源代码。其调用方式为$txt=big5togb($txt)。 (注:源代码中的include "data_big5.php";这个文件在就是一个数组,在http://caocao.oso.com.cn/data_big5.zip,请编辑下载到oso上,做一个链接,因为这个文件我过几天就要删除了。) <? /*********************************************************************** Written by caocao [email protected] http://caocao.oso.com.cn With the help of Keyes [email protected] http://my-wjl.scu.edu.cn/~Keyes ***********************************************************************/ function isbig5($code) { if (strlen($code)>=2) { $code=strtok($code,""); if (ord($code[0]) < 161) { return (0); } else { if (((ord($code[1]) >= 64)&&(ord($code[1]) <= 126))||((ord($code[1]) >= 161)&&(ord($code[1]) <= 254))) { return (1); } else { return (0); } } } else { return (0); } } function big5offset($code) { if (strlen($code) >= 2) { $code=strtok($code,""); if ((ord($code[1]) >= 64)&&(ord($code[1]) <= 126)) { return ((ord($code[0]) - 161) * 157 + (ord($code[1]) - 64)); } if ((ord($code[1]) >= 161)&&(ord($code[1]) <= 254)) { return ((ord($code[0]) - 161) * 157 + 63 + (ord($code[1]) - 161)); } } return (-1); } function wordtostring($code) { return (chr(hexdec(substr($code,0,2))).chr(hexdec(substr($code,2,2)))); } function big5togb($code) { include "data_big5.php"; $output=""; $length=strlen($code); $code=strtok($code,""); $idx=0; while ($idx < $length) { $tmpStr=$code[$idx].$code[$idx+1]; if (isbig5($tmpStr)) { $offset=big5offset($tmpStr); if (($offset >= 0)||($offset <= 14757)) { $output.=wordtostring($big5order[$offset]); $idx++; } else { $output.= $code[$idx]; } } else { $output.= $code[$idx]; } $idx++; } return ($output); } ?> 求正则高手!!! 关于线程安全与非线程安全的【疑惑】 求助:用HTML代码做个个人简历的表格 php怎样实现上传web/网络中的图片 请教一个PHP的问题 简单问题. 如何用php php配置完java扩展以后出现的问题 用php中的如何用mail函数加快发送大量的邮件,有几千个用户, 关于的到访客的ip和从何处来的,载线等待,100分 !!! 怎样来调用服务器端的播放器来放音乐呢 怎样才可以浏览用PHP写的网页(初学者)?送分。。。
http://netcity.hinet.net/kstchieh/table.zip
2.加入下列PHP程式码: function big52gb($Text){
$fp = fopen(\"big5-gb.table\", \"r\"); $max=strlen($Text)-1;
for($i=0;$i<$max;$i++){
$h=ord($Text[$i]);
if($h>=160){
$l=ord($Text[$i+1]);
if($h==161 && $l==64){
$gb=\"\";
}else{
fseek($fp,($h-160)*510+($l-1)*2);
$gb=fread($fp,2);
}
$Text[$i]=$gb[0];
$Text[$i+1]=$gb[1];
$i++;
}
}
fclose($fp);
return $Text;
}
3.接著就可以用了 $a=\"繁体转简体\";
$a=big52gb($a);
以上程式码是最简单的方法,也就是一个一个翻,至於速度 还可以,若要快点,那就要改写一下方法了(我不是用这种方法,不过因为我的方法还在测试中,还不知稳不稳定, 所以暂时没写出来)...^^
(注:源代码中的include "data_gb.php";这个文件在就是一个数组,在http://caocao.oso.com.cn/data_gb.zip,请编辑下载到oso上,做一个链接,因为这个文件我过几天就要删除了。) <?
/***********************************************************************
Written by caocao
[email protected]
http://caocao.oso.com.cn With the help of Keyes
[email protected]
http://my-wjl.scu.edu.cn/~Keyes
***********************************************************************/
function isgb($code)
{
if (strlen($code)>=2)
{
$code=strtok($code,"");
if ((ord($code[0]) < 161)||(ord($code[0]) >= 247))
{
return (0);
}
else
{
if ((ord($code[1]) <= 161)||(ord($code[1]) >= 254))
{
return (0);
}
else
{
return (1);
}
}
}
else
{
return (1);
}
} function gboffset($code)
{
if (strlen($code) >= 2)
{
$code=strtok($code,"");
return ((ord($code[0]) - 161) * 94 + (ord($code[1]) - 161));
}
else
{
return(-1);
}
} function wordtostring($code)
{
return (chr(hexdec(substr($code,0,2))).chr(hexdec(substr($code,2,2))));
} function gbtobig5($code)
{
include "data_gb.php";
$output="";
$length=strlen($code);
$code=strtok($code,"");
$idx=0;
while ($idx < $length)
{
$tmpStr=$code[$idx].$code[$idx+1]; if (isgb($tmpStr))
{
$offset=gboffset($tmpStr);
if (($offset >= 0)||($offset <= 8177))
{
$output.=wordtostring($gborder[$offset]);
$idx++;
}
else
{
$output.= $code[$idx];
}
}
else
{
$output.= $code[$idx];
}
$idx++;
}
return ($output);
};
?>
(注:源代码中的include "data_big5.php";这个文件在就是一个数组,在http://caocao.oso.com.cn/data_big5.zip,请编辑下载到oso上,做一个链接,因为这个文件我过几天就要删除了。) <?
/***********************************************************************
Written by caocao
[email protected]
http://caocao.oso.com.cn With the help of Keyes
[email protected]
http://my-wjl.scu.edu.cn/~Keyes
***********************************************************************/
function isbig5($code)
{
if (strlen($code)>=2)
{
$code=strtok($code,""); if (ord($code[0]) < 161)
{
return (0);
}
else
{
if (((ord($code[1]) >= 64)&&(ord($code[1]) <= 126))||((ord($code[1]) >= 161)&&(ord($code[1]) <= 254)))
{
return (1);
}
else
{
return (0);
}
}
}
else
{
return (0);
}
} function big5offset($code)
{
if (strlen($code) >= 2)
{
$code=strtok($code,"");
if ((ord($code[1]) >= 64)&&(ord($code[1]) <= 126))
{
return ((ord($code[0]) - 161) * 157 + (ord($code[1]) - 64));
}
if ((ord($code[1]) >= 161)&&(ord($code[1]) <= 254))
{
return ((ord($code[0]) - 161) * 157 + 63 + (ord($code[1]) - 161));
}
}
return (-1);
} function wordtostring($code)
{
return (chr(hexdec(substr($code,0,2))).chr(hexdec(substr($code,2,2))));
} function big5togb($code)
{
include "data_big5.php";
$output="";
$length=strlen($code);
$code=strtok($code,"");
$idx=0;
while ($idx < $length)
{
$tmpStr=$code[$idx].$code[$idx+1]; if (isbig5($tmpStr))
{
$offset=big5offset($tmpStr);
if (($offset >= 0)||($offset <= 14757))
{
$output.=wordtostring($big5order[$offset]);
$idx++;
}
else
{
$output.= $code[$idx];
}
}
else
{
$output.= $code[$idx];
}
$idx++;
}
return ($output);
}
?>