简体中文转换为繁体中文的PHP函数
    感谢网友Keyes提供移植用的Delphi源代码。其调用方式为$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);
};
?>