GBK->拼音PHP类

原创 2004年11月01日 13:41:00
<?
/***********************************************************************
                       Written by caocao
                       caocao@eastday.com
                       http://nethermit.yeah.net
***********************************************************************/

class pinyin
{
    var
$data;
    var
$dataSpecial;
    var
$tone;
    var
$head;
    var
$format;
    var
$foot;
    function
setTone($tone)
    {
        
$this->tone=$tone;
    }
    function
setFormat($head, $format, $foot)
    {
        
$this->head=$head;
        
$this->format=$format;
        
$this->foot=$foot;
    }
    function
render($str, $ascii=false)
    {
        if (
$ascii)
            return
str_replace("%1", $str, str_replace("%2", $str, $this->format));
        if (
preg_match("/^".$str."([0-9a-zA-Z]+)/im", $this->data, $regs))
            
$pinyin=$regs[1];
        else
            
$pinyin=$str." ";
        return
str_replace("%1", $str, str_replace("%2", $this->tone?$pinyin:substr($pinyin, 0, -1), $this->format));
    }
    function
parse($str)
    {
        
$output="";
        
$length=strlen($str);
        
$output.=$this->head;
        for (
$i=0;$i<$length;++$i)
        {
            if (
$i==$length-1)
            {
                
$output.=$this->render($str[$i], true);
                break;
            }
            
$code1=ord($str[$i]);
            
$code2=ord($str[$i+1]);
            if (
$code1==0x0D&&$code2==0x0A)
            {
                
$output.=$this->foot;
                
$output.=$this->head;
                ++
$i;
            }
            else if (
$code1>=0x81&&$code1<=0xFE&&$code2>=0x40&&$code2<=0xFE&&$code2!=0x7F)
            {
                
$output.=$this->render($str[$i].$str[$i+1]);
                ++
$i;
            }
            else
                
$output.=$this->render($str[$i], true);
        }
        
$output.=$this->foot;
        return
$output;
    }
    function
pinyin()
    {
        
$this->tone=true;
        
$this->head="<table border=0><tr align=center>";
        
$this->format="<td>%2<br />%1</td>";
        
$this->foot="</tr></table>";
        
$this->data=file_get_contents("pinyin_data.php");
    }
}
?>

PHP的UTF-8中文转拼音处理类(性能已优化至极致)

优化了传统的拼音转换处理类的算法,专门针对UTF-8字符集进行处理。 如果你使用GBK或GB2312字符集,只需要去掉iconv函数,直接赋值,不需要转换就行。...
  • hzbigdog
  • hzbigdog
  • 2014年07月15日 15:38
  • 24984

PHP汉字转拼音类(UTF-8) 支持转换后带有声调和无声调以及只获取汉字首字母

PHP汉字转拼音类(UTF-8) demo: 演示文字:中华人民共和国 可以实现以下三种 任一种转换 ①转成带有声调的汉语拼音 zhōng huá rén mín gòng hé guó ②转...
  • kin1987
  • kin1987
  • 2014年03月18日 16:44
  • 1326

php根据汉字获取拼音(php基于拼音搜索实现原理)

代码一:获取字符串汉字首字母,兼容GBK和UTF-8 function getfirstchar($s0){   //获取单个汉字拼音首字母。注意:此处不要纠...
  • yuan3065
  • yuan3065
  • 2016年07月20日 11:54
  • 1370

PHP 汉字转拼音类(全拼与首字母)

  • maque0312
  • maque0312
  • 2015年12月29日 16:13
  • 1951

汉字转拼音类(php)(转载)

PHP汉字转拼音类
  • cckooo
  • cckooo
  • 2016年12月20日 14:44
  • 191

PHP获取汉字拼音首字母

  • liuzp111
  • liuzp111
  • 2014年09月02日 14:36
  • 2464

php中使用拼音排序

刚才做一个数组排序,发现utf-8下,用asort对值包含中文的数组排序,并不是按拼音排序。把utf-8转为gbk后,在使用asort就可以使中文按照拼音排序了,囧~~   代码:   ...
  • sysmaid
  • sysmaid
  • 2013年11月19日 11:27
  • 2854

php 将汉字转换成拼音

  • guaiguaiknl
  • guaiguaiknl
  • 2016年12月29日 14:53
  • 654

php拼音检索

1. 系统使用拼音搜索,表里面加入三个字段即可 即 拼音字段 pinyin 首字母字段 first_word 简写字段 short_cut 如下表: id city pinyin first...
  • wujiangwei567
  • wujiangwei567
  • 2017年12月12日 22:06
  • 83

PHP 将连续的汉语拼音分隔开

问题描述:       例: woshidewenfensi => wo shi de wen fen si       woshidewenfensi 这段拼音有可能输入的时候已经有分隔 比如:wo...
  • aoshilang2249
  • aoshilang2249
  • 2016年01月10日 15:41
  • 962
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GBK->拼音PHP类
举报原因:
原因补充:

(最多只允许输入30个字)