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

前几天我在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);
}
?>

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

(0)

相关推荐

  • 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截取中文字符串函数实例

    本文实例讲述了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函数

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

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

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

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

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

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

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

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

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

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

  • 基于JavaScript实现快速转换文本语言(繁体中文和简体中文)

    一般商业网站都有一个语言的需求,就是为了照顾使用正体中文的国人,会特地提供一个切换到正体中文的选项(或曰"繁体中文").传统做法是在服务端完成的,即通过某些控件或者过滤器转换文本语言.这里笔者介绍一种简单可行的方法,不是在服务端而是利用前端的 JavaScript 就可以切换正体中文. 如下图,我们把切换按钮放在页脚(当然你也可以放置在"导航"或者其他更醒目的位置). 由于页面假设设定均使用 Unicode 字符集,于是一般不用考虑 GB2312/BIG5 字符集问

  • JavaScript快速切换繁体中文和简体中文的方法及网站支持简繁体切换的绝招

    一般商业网站都有一个语言的需求,就是为了照顾使用正体中文的国人,会特地提供一个切换到正体中文的选项(或曰"繁体中文").传统做法是在服务端完成的,即通过某些控件或者过滤器转换文本语言.这里笔者介绍一种简单可行的方法,不是在服务端而是利用前端的 JavaScript 就可以切换正体中文. 大概六年前我还专门写过这议题的博文,这篇也是奠基在那篇文章(旧文也是参考了一高手代码)之上,<对 JavaScript 繁简字切换的小改进>.时过境迁,有必要把代码进行更新一下--以前的太稚

  • PHP实现把文本中的URL转换为链接的auolink()函数分享

    其实我在<把文本中的URL地址转换为可点击链接的JavaScript.PHP自定义函数>一文中介绍过PHP代码如何实现将URL地址转化成链接的方法,今天给大家介绍一个更加简洁的版本,先来看看PHP的源代码: auolink() API 复制代码 代码如下: /** * Author: SeeDZ * From: http://code.seebz.net/p/autolink-php/ **/ function autolink($str, $attributes = array()) {  

  • asp中将相对路径转换为绝对路径的函数代码

    复制代码 代码如下: '================================================ ' 函数名:ChkMapPath ' 作 用:相对路径转换为绝对路径 ' 参 数:strPath ----原路径 ' 返回值:绝对路径 '================================================ Function ChkMapPath(ByVal strPath) Dim fullPath strPath = Replace(Repla

  • 中文字符串截取的js函数代码

    为了解决这个问题昨天写了根据字节数截取字符串的函数.具体使用很简单,跟String.subString(start, end)一样使用就可.比如:var str = "诶必塞第衣爱抚即"; var str1 = str.subCHStr(2, 2); var str2 = str.subCHString(2, 4); alert(str1 + " == " + str2); 复制代码 代码如下: Code//计算字符串长度String.prototype.strLe

  • 如何把中文转换为UNICODE?

    <%function unicode(str)dim i,j,c,i1,i2,u,fs,f,punicode=""p=""for i=1 to len(str)c=mid(str,i,1)j=ascw(c)if j<0 thenj=j+65536end ifif j>=0 and j<=128 thenif p="c" thenunicode=" "&unicodep="e"

随机推荐