所需阅读权限 1
[转帖]简体中文转换为繁体中文的PHP函数
感谢网友Keyes提供移植用的Delphi源代码。其调用方式为$txt=gbtobig5($txt)。
(注:源代码中的include "data_gb.php";这个文件在就是一个数组,http://caocao.oso.com.cn/data_gb.zip,请编辑下载到oso上,做一个链接,因为这个文件我过几天就要删除了。)- <?
- /***********************************************************************
- Written by caocao
- caocao@eastday.com
- http://caocao.oso.com.cn ;
- With the help of Keyes
- Keyes2000@263.net
- 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);
- };
- ?>
复制代码 |