Home  >  Article  >  Backend Development  >  PHP function to convert Traditional Chinese to Simplified Chinese_PHP tutorial

PHP function to convert Traditional Chinese to Simplified Chinese_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 16:02:181208browse

A few days ago, I asked on the oso forum if there was such a source program, but no one responded. I finally made up my mind to transplant such a function. Thanks to netizen Keyes for providing the Delphi source code for transplantation. The calling method is $txt=big5togb($txt).
(Note: include "data_big5.php" in the source code; this file is an array at http://caocao.oso.com.cn/data_big5.zip. Please edit and download it to oso to make an link, because I will delete this file in a few days.)

/***********************************************************************
                       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);
}
?>  

【本文版权归作者与奥索网共同拥有,如需转载,请注明作者及出处】    

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/316579.htmlTechArticleA few days ago I asked on the oso forum if there was such a source program, but no one responded. I finally made up my mind to transplant such a function. Thanks to netizen Keyes for providing the Delphi source code for transplantation. Its caller...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn