简体中文转换为繁体中文的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);
};
?>

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

(0)

相关推荐

  • php截取中文字符串函数实例

    本文实例讲述了php截取中文字符串函数.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <?php //中文字符串截取 function substr_zh($string,$sublen,$start=0,$code='UTF-8'){  if($code=='UTF-8'){   $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x8

  • php使用iconv中文截断问题的解决方法

    本文实例讲述了php使用iconv中文截断问题的解决方法.分享给大家供大家参考.具体分析如下: 今天做了一个采集程序,原理很简单,使用curl方法把对方页面的html获取分析,然后正则提取需要的数据并保存在数据库. 由于对方页面是GB2312编码,而本地使用的是UTF-8编码.因此在采集后需要进行编码转换. 使用了iconv方法进行编码转换 iconv - 字符串按要求的字符编码来转换  string iconv ( string $in_charset , string $out_charse

  • PHP中文乱码解决方案

    汉字乱码真是一个悲催的事情,JAVA讨厌汉字,PHP也不喜欢汉字: Java乱码最终使用了spring给出的过滤器来过滤,处处过滤,其实影响了速度,不过没有办法,汉字就是W国首先不考虑的事情: 想不到PHP也是乱码处处在,当你使用亲兄弟MySQL的时候,汉字显得那么亲切,从未考虑过他会变成天书:不过为了和其他其他交互,把PHP的手伸到SQL SERVER的时候,乱码来了,原因是第三方系统用的GBK编码: 哎,转换吧:    1,PHP自带的转换函数ICONV,一个高大上的函数: 复制代码 代码如

  • php上传中文文件名乱码问题处理方案

    php上传文件是最最基础的一个技术点,但是深入进去也有不少问题需要解决,这不,上传中文文件后,文件名变成了乱码. 下面是问题代码,很简单: 1.问题代码 html部分: 复制代码 代码如下: <html>  <body>  <form action="upload_file.php" method="post"  enctype="multipart/form-data">  <label for=&qu

  • PHP中文编码小技巧

    PHP程序设计中中文编码问题曾经困扰很多人,导致这个问题的原因其实很简单,每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的扩展 ASCII 码,中国的 GB2312-80,日本的 JIS 等.作为该国家/区域内信息处理的基础,字符编码集起着统一编码的重要作用.字符编码集按长度分为 SBCS(单字节字符集),DBCS(双字节字符集)两大类.早期的软件(尤其是操作系统),为了解决本地字符信息的计算机处理,出现了各种本地化版本(L10N),为了区分,引进了 LANG, Codepage

  • PHP实现的各种中文编码转换类分享

    目前该类库可以实现的编码转换有:简体中文 GB <-> 繁体中文 BIG5 编码互换,简/繁体中文 -> 拼音单向转换, 简/繁体中文 <-> UTF8 编码转换,简/繁体中文 -> Unicode单向转换. 类源代码原作者是Hessian(solarischan@21cn.com),我合并了一下原来的Sample脚本,同时修改了一下类文件,为类构造函数增加了一个参数以便用户可以方便的在使用的时候设置配置文件路径,这样就可以把这个类包放置在任何可以被访问到的目录下,否则

  • 繁体中文转换为简体中文的PHP函数

    前几天我在oso论坛上问有没有这个源程序,没人回复.终于下定决心移植一个这样的函数,感谢网友Keyes提供移植用的Delphi源代码.其调用方式为$txt=big5togb($txt).     (注:源代码中的include "data_big5.php";这个文件在就是一个数组,在http://caocao.oso.com.cn/data_big5.zip,请编辑下载到oso上,做一个链接,因为这个文件我过几天就要删除了.) <? /*********************

  • php中文繁体和简体相互转换的方法

    本文实例讲述了php中文繁体和简体相互转换的方法.分享给大家供大家参考.具体分析如下: 下面的代码用到了繁体和简体字库对照表,实现繁体与简体字的转换功能 复制代码 代码如下: <?php class utf8_chinese {   private $utf8_gb2312;   private $utf8_big5;   private $data;   public function __construct($data){       $this->utf8_gb2312 = $data[

  • 简体中文转换为繁体中文的PHP函数

    感谢网友Keyes提供移植用的Delphi源代码.其调用方式为$txt=gbtobig5($txt).     (注:源代码中的include "data_gb.php";这个文件在就是一个数组,在http://caocao.oso.com.cn/data_gb.zip,请编辑下载到oso上,做一个链接,因为这个文件我过几天就要删除了.) <? /*******************************************************************

  • 简体中文转换繁体中文(实现代码)

    复制代码 代码如下: var Default_isFT = 0        //默认是否繁体,0-简体,1-繁体   var StranIt_Delay = 50 //翻译延时毫秒(设这个的目的是让网页先流畅的显现出来) //-------代码开始,以下别改-------   //转换文本   function StranText(txt,toFT,chgTxt)  {      if(txt==""||txt==null)return ""      toFT=

  • Python实现繁体中文与简体中文相互转换的方法示例

    本文实例讲述了Python实现繁体中文与简体中文相互转换的方法.分享给大家供大家参考,具体如下: 工作中需要将繁体中文转换成简体中文 上网找了些资料,发现这个包最方便:https://github.com/skydark/nstools/tree/master/zhtools 安装方法 不需要什么安装方法,只需要把这两个文件下载下来,保存到与代码同一目录下即可 https://raw.githubusercontent.com/skydark/nstools/master/zhtools/lan

  • php中支持多种编码的中文字符串截取函数!

    支持多种编码的中文字符串截取函数!   复制代码 代码如下: /*     * @todo 中文截取,支持gb2312,gbk,utf-8,big5      *     * @param string $str 要截取的字串     * @param int $start 截取起始位置     * @param int $length 截取长度     * @param string $charset utf-8|gb2312|gbk|big5 编码      * @param $suffix

  • php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例

    本文实例讲述了php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8用法.分享给大家供大家参考,具体如下: /* *gb2312中文字符串截取 */ function substr_for_gb2312($str,$start,$len=null) { $totlelength = strlen($str); //特例情况 if ($len == null) $len = $totlelength; if ($len ==0) return ""

  • PHP人民币金额数字转中文大写的函数代码

    在网上看到一个非常有趣的PHP人民币金额数字转中文大写的函数,其实质就是数字转换成中文大写,测试了一下,非常有趣,随便输个数字,就可以将其大写打印出来,新手朋友们试一下吧,举一反三,还可以写好多有趣的PHP转换函数. 复制代码 代码如下: <?  function cny($ns) {     static $cnums=array("零","壹","贰","叁","肆","伍",

  • 一个阿拉伯数字转中文数字的函数

    最近因需要,写了个"阿拉伯数字转中文数字的函数".搜索了精华区只见到一个类似的.感觉到我的算法不错,所以贴出来共享一下如果要用于金额的转换,对小数部分的处理要做一下修改<?phpfunction ch_num($num,$mode=true) {  $char = array("零","壹","贰","叁","肆","伍","陆","

  • Golang中文字符串截取函数实现原理

    在golang中可以通过切片截取一个数组或字符串,但是当截取的字符串是中文时,可能会出现的问题是:由于中文一个字不只是由一个字节组成,所以直接通过切片可能会把一个中文字的编码截成两半,结果导致最后一个字符是乱码. 例如: 想要截取前四个字 name := "我是胡八一" fmt.Println("name[:4] = ",name[:4]) 执行后得到的结果会是这样的: name[:4] = 我? 解决方法: 先将其转为[]rune,再截取后,转会string na

  • 在laravel中实现将查询的对象转换为多维数组的函数

    我们在laravel中通过数据库查询,有时获取的为对象.但是在进行使用excel类的时候,要求我们使用的多维数组.那么我们就不要进行转换了,如果使用toArray()无能将对象转换我们想要的类型,就需要手动转换. 下面贴代码: //函数处理,转换为表格需求的格式 $d =[]; foreach ($goods as $k=>$v) { $m = []; foreach ($v as $i=>$j) { $m[$i] = $j; } $d[$k] = $m; } 备注$goods是数组查询出来的

  • JavaScript与jQuery中文档就绪函数的区别

    目录 1.文档就绪函数 2.window.onload 与 $(document).ready()的区别 1.文档就绪函数 JavaScript 的文档就绪函数: <script>     window.onload = function() {         alert("欢迎!")     } </script> jQuery 中的文档就绪函数: // 写法1 <script>     $(document).ready(function()

随机推荐