前几天我在oso论坛上问有没有这个源程序,没人回复。终于下定决心移植一个这样的函数,感谢网友Keyes提供移植用的Delphi源代码。其调用方式为$txt=big5togb($txt)。 
    (注:源代码中的include "data_big5.php";这个文件在就是一个数组,在http://caocao.oso.com.cn/data_big5.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 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); 
} 
?>  
【本文版权归作者与奥索网共同拥有,如需转载,请注明作者及出处】