• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php获取中文拼音首字母类和函数分享_php实例

php 搞代码 3年前 (2022-01-26) 34次浏览 已收录 0个评论

一、公司同事整理的类,挺实用的.相信拿出来分享下他不会介意的O(∩_∩)O.不过如果首字母是数字或英文会有些问题.

/**<BR> * Helper_Spell 汉字拼音首字母工具类<BR> *<BR> * @category Helper<BR> * @package  Helper_Spell<BR> * @author   Lancer <em>/本2文来源[email protected]搞@^&代*@码2网</em><strong>搞gaodaima代码</strong><BR> * @version  1.0<BR> * @see      Translation_Big2gb<BR> */</P><P>class Helper_Spell {<BR>/**<BR> * $_pinyins<BR> * @var array<BR> * @access private<BR> */<BR>private $_pinyins = array(<BR>    176161 => 'A',<BR>    176197 => 'B',<BR>    178193 => 'C',<BR>    180238 => 'D',<BR>    182234 => 'E',<BR>    183162 => 'F',<BR>    184193 => 'G',<BR>    185254 => 'H',<BR>    187247 => 'J',<BR>    191166 => 'K',<BR>    192172 => 'L',<BR>    194232 => 'M',<BR>    196195 => 'N',<BR>    197182 => 'O',<BR>    197190 => 'P',<BR>    198218 => 'Q',<BR>    200187 => 'R',<BR>    200246 => 'S',<BR>    203250 => 'T',<BR>    205218 => 'W',<BR>    206244 => 'X',<BR>    209185 => 'Y',<BR>    212209 => 'Z',<BR>    215249 => 'Z',<BR>);</P><P><BR>/**<BR> * $_charset<BR> * @var string<BR> * @access private<BR> */<BR>private $_charset = null;<br><br>/**<BR> * __construct 构造函数, 指定需要的编码 default: utf-8 支持utf-8, gb2312<BR> *<BR> * @param unknown_type $charset<BR> */<BR>public function __construct( $charset = 'utf-8' ) {<BR>    $this->_charset = $charset;<BR>}</P><P>/**<BR> * getInitialsFirst 返回首个汉字的拼音<BR> *<BR> * @access public<BR> * @static<BR> * @param  string $str<BR> * @return string<BR> * @example Helper_Spell::getInitialsFirst('我的爱'); => w<BR> */<BR>public static function getInitialsFirst( $str, $charset = 'utf-8' ) {<BR>    $chars = array(<BR>        'A','B','C','D','E','F',<BR>        'G','H','I','J','K','L',<BR>        'M','N','O','P','Q','R',<BR>        'S','T','U','V','W','X',<BR>        'Y','Z');</P><P><BR>    $string = self::getInitials( $str );<BR>    $length = strlen($string);</P><P><BR>    for($i=0; $i < $length; $i++) {<BR>        if ( in_array( $string{$i}, $chars ) ) {<BR>            return $string{$i};<BR>        }<BR>    }<BR>    return '*';<BR>}</P><P><BR>/**<BR> * getInitials 返回拼音组合<BR> *<BR> * @access public<BR> * @static<BR> * @param  string $str<BR> * @return string<BR> * @example Helper_Spell::getInitials('我的爱'); => wda<BR> */<BR>public static function getInitials( $str, $charset = 'utf-8' ) {<BR>    $instance = new Helper_Spell( $charset );<BR>    return $instance->_getInitials( $str );<BR>}</P><P><BR>/**<BR> * _getInitials 获取中文字串的拼音首字符<BR> *              注:英文的字串:不变返回(包括数字)    eg .abc123 => abc123<BR> *                  中文字符串:返回拼音首字符        eg. 王小明 => WXM<BR> *                  中英混合串: 返回拼音首字符和英文  eg. 我i我j => WIWJ<BR> *<BR> * @access private<BR> * @param  string $str<BR> * @return string<BR> */<BR>private function _getInitials( $str, $translation=TRUE ){<BR>    if ( empty($str) ) return '';<BR>    if ( $this->_isAscii($str[0]) && $this->_isAsciis( $str ))<BR>        return $str;<br><br>    if ( $translation )<BR>        $str = Translation_Big2gb::big2gb( $str );<br><br>    $result = array();<BR>    if ( $this->_charset == 'utf-8' ){<BR>        //IGNORE很重要,加上这个就可以是ICONV()函数忽略错误,继续执行<BR>        $str = iconv( 'utf-8', 'gbk//IGNORE', $str );<BR>    }<BR>    $words = $this->_cutWord( $str );</P><P><BR>    foreach ( $words AS $word ) {           <BR>        if ( $this->_isAscii($word) ) {//非中文<BR>            $result[] = $word;<BR>            continue;<BR>        }<BR>        $code = ( ord(substr($word,0,1)) ) * 1000 + (ord(substr($word,1,1)));<BR>        //获取拼音首字母A--Z</P><P><BR>        if ( ($i = $this->_search($code)) != -1 ){<BR>            $result[] = $this->_pinyins[$i];<BR>        }<BR>    }<BR>    return strtoupper(implode('', $result));<BR>}</P><P><BR>/**<BR> * _msubstr 获取中文字符串<BR> *<BR> * @access private<BR> * @param string $str<BR> * @param int    $start<BR> * @param int    $len<BR> * @return string<BR> */<BR>private function _msubstr ($str, $start, $len) {<BR>    $start  = $start * 2;<BR>    $len    = $len * 2;<BR>    $strlen = strlen($str);<BR>    $result = '';<BR>    for ( $i = 0; $i < $strlen; $i++ ) {<BR>        if ( $i >= $start && $i < ($start + $len) ) {<BR>            if ( ord(substr($str, $i, 1)) > 129 ) $result .= substr($str, $i, 2);<BR>            else $result .= substr($str, $i, 1);<BR>        }<BR>        if ( ord(substr($str, $i, 1)) > 129 ) $i++;<BR>    }<BR>    return $result;<BR>}</P><P><BR>/**<BR> * _cutWord  字符串切分为数组 (汉字或者一个字符为单位)<BR> *<BR> * @access private<BR> * @param string $str<BR> * @return array<BR> */<BR>private function _cutWord( $str ) {<BR>    $words = array();<BR>    while ( $str != "" ) {<BR>        if ( $this->_isAscii($str) ) {//非中文<BR>            $words[] = $str[0];<BR>            $str = substr( $str, strlen($str[0]) );<BR>        } else {<BR>            $word = $this->_msubstr( $str, 0, 1 );<BR>            $words[] = $word;<BR>            $str = substr( $str,  strlen($word) );<BR>        }<BR>     }<BR>     return $words;<BR>}</P><P><BR>/**<BR> * _isAscii 判断字符是否是ascii字符<BR> *<BR> * @access private<BR> * @param  string $char<BR> * @return bool<BR> */<BR>private function _isAscii( $char ) {<BR>    return ( ord( substr($char,0,1) ) < 160 );<BR>}</P><P> </P><P>/**<BR> * _isAsciis 判断字符串前3个字符是否是ascii字符<BR> *<BR> * @access private<BR> * @param  string $str<BR> * @return bool<BR> */<BR>private function _isAsciis( $str ) {<BR>    $len = strlen($str) >= 3 ? 3: 2;<BR>    $chars = array();<BR>    for( $i = 1; $i < $len -1; $i++ ){<BR>        $chars[] = $this->_isAscii( $str[$i] ) ? 'yes':'no';<BR>    }<BR>    $result = array_count_values( $chars );<BR>    if ( empty($result['no']) ){<BR>        return true;<BR>    }<BR>    return false;<BR>}</P><P><br><br>/**<BR> * _getChar 通过ASC码返回字母或者数字<BR> *<BR> * @access private<BR> * @param  string $ascii<BR> * @return string<BR> */<BR>private function _getChar( $ascii ){<BR>    if ( $ascii >= 48 && $ascii <= 57 ) {<BR>        return chr($ascii);  //数字<BR>    } elseif ( $ascii>=65 && $ascii<=90 ) {<BR>        return chr($ascii);   // A--Z<BR>    } elseif ($ascii>=97 && $ascii<=122 ) {<BR>        return chr($ascii-32); // a--z<BR>    } else {<BR>        return '~'; //其他<BR>    }<BR>}</P><P><BR>/**<BR> * _search 查找需要的汉字内码(gb2312) 对应的拼音字符(二分法)<BR> *<BR> * @access private<BR> * @param int $code<BR> * @return int<BR> */<BR>private function _search( $code ) {    <BR>    $data = array_keys($this->_pinyins);</P><P><BR>    $lower = 0;<BR>    $upper = sizeof($data)-1;</P><P><BR>    // 排除非一级汉字<BR>    if ($code  $data[23]) return -1;</P><P><BR>    for (;;) {         <BR>        if ( $lower > $upper ){             <BR>            return $data[$lower-1];<BR>        }<BR>        $middle = (int) round(($lower + $upper) / 2);<BR>        if ( !isset($data[$middle]) ) {          <BR>            return -1;<BR>        }</P><P><BR>        if ( $data[$middle] < $code ){<BR>            $lower = (int)$middle + 1;<BR>        } else if ( $data[$middle] == $code ) {           <BR>            return $data[$middle];<BR>        } else {<BR>            $upper = (int)$middle - 1;<BR>        }<BR>    }// end for<BR>}</P><P>}

二、用来得到中文的首字母

这个是将中文转换为拼音的类:charset

<?php<BR>/**<BR> * 汉字转化为拼音,拼音转化为汉字<BR> * <BR> */</P><P>class charset<BR>{<BR>    private $_code=array(<BR>    array("a",'-20319'),<BR>    array("ai",'-20317'),<BR>    array("an",'-20304'),<BR>    array("ang",'-20295'),<BR>    array("ao",'-20292'),<BR>    array("ba",'-20283'),<BR>    array("bai",'-20265'),<BR>    array("ban",'-20257'),<BR>    array("bang",'-20242'),<BR>    array("bao",'-20230'),<BR>    array("bei",'-20051'),<BR>    array("ben",'-20036'),<BR>    array("beng",'-20032'),<BR>    array("bi",'-20026'),<BR>    array("bian",'-20002'),<BR>    array("biao",'-19990'),<BR>    array("bie",'-19986'),<BR>    array("bin",'-19982'),<BR>    array("bing",'-19976'),<BR>    array("bo",'-19805'),<BR>    array("bu",'-19784'),<BR>    array("ca",'-19775'),<BR>    array("cai",'-19774'),<BR>    array("can",'-19763'),<BR>    array("cang",'-19756'),<BR>    array("cao",'-19751'),<BR>    array("ce",'-19746'),<BR>    array("ceng",'-19741'),<BR>    array("cha",'-19739'),<BR>    array("chai",'-19728'),<BR>    array("chan",'-19725'),<BR>    array("chang",'-19715'),<BR>    array("chao",'-19540'),<BR>    array("che",'-19531'),<BR>    array("chen",'-19525'),<BR>    array("cheng",'-19515'),<BR>    array("chi",'-19500'),<BR>    array("chong",'-19484'),<BR>    array("chou",'-19479'),<BR>    array("chu",'-19467'),<BR>    array("chuai",'-19289'),<BR>    array("chuan",'-19288'),<BR>    array("chuang",'-19281'),<BR>    array("chui",'-19275'),<BR>    array("chun",'-19270'),<BR>    array("chuo",'-19263'),<BR>    array("ci",'-19261'),<BR>    array("cong",'-19249'),<BR>    array("cou",'-19243'),<BR>    array("cu",'-19242'),<BR>    array("cuan",'-19238'),<BR>    array("cui",'-19235'),<BR>    array("cun",'-19227'),<BR>    array("cuo",'-19224'),<BR>    array("da",'-19218'),<BR>    array("dai",'-19212'),<BR>    array("dan",'-19038'),<BR>    array("dang",'-19023'),<BR>    array("dao",'-19018'),<BR>    array("de",'-19006'),<BR>    array("deng",'-19003'),<BR>    array("di",'-18996'),<BR>    array("dian",'-18977'),<BR>    array("diao",'-18961'),<BR>    array("die",'-18952'),<BR>    array("ding",'-18783'),<BR>    array("diu",'-18774'),<BR>    array("dong",'-18773'),<BR>    array("dou",'-18763'),<BR>    array("du",'-18756'),<BR>    array("duan",'-18741'),<BR>    array("dui",'-18735'),<BR>    array("dun",'-18731'),<BR>    array("duo",'-18722'),<BR>    array("e",'-18710'),<BR>    array("en",'-18697'),<BR>    array("er",'-18696'),<BR>    array("fa",'-18526'),<BR>    array("fan",'-18518'),<BR>    array("fang",'-18501'),<BR>    array("fei",'-18490'),<BR>    array("fen",'-18478'),<BR>    array("feng",'-18463'),<BR>    array("fo",'-18448'),<BR>    array("fou",'-18447'),<BR>    array("fu",'-18446'),<BR>    array("ga",'-18239'),<BR>    array("gai",'-18237'),<BR>    array("gan",'-18231'),<BR>    array("gang",'-18220'),<BR>    array("gao",'-18211'),<BR>    array("ge",'-18201'),<BR>    array("gei",'-18184'),<BR>    array("gen",'-18183'),<BR>    array("geng",'-18181'),<BR>    array("gong",'-18012'),<BR>    array("gou",'-17997'),<BR>    array("gu",'-17988'),<BR>    array("gua",'-17970'),<BR>    array("guai",'-17964'),<BR>    array("guan",'-17961'),<BR>    array("guang",'-17950'),<BR>    array("gui",'-17947'),<BR>    array("gun",'-17931'),<BR>    array("guo",'-17928'),<BR>    array("ha",'-17922'),<BR>    array("hai",'-17759'),<BR>    array("han",'-17752'),<BR>    array("hang",'-17733'),<BR>    array("hao",'-17730'),<BR>    array("he",'-17721'),<BR>    array("hei",'-17703'),<BR>    array("hen",'-17701'),<BR>    array("heng",'-17697'),<BR>    array("hong",'-17692'),<BR>    array("hou",'-17683'),<BR>    array("hu",'-17676'),<BR>    array("hua",'-17496'),<BR>    array("huai",'-17487'),<BR>    array("huan",'-17482'),<BR>    array("huang",'-17468'),<BR>    array("hui",'-17454'),<BR>    array("hun",'-17433'),<BR>    array("huo",'-17427'),<BR>    array("ji",'-17417'),<BR>    array("jia",'-17202'),<BR>    array("jian",'-17185'),<BR>    array("jiang",'-16983'),<BR>    array("jiao",'-16970'),<BR>    array("jie",'-16942'),<BR>    array("jin",'-16915'),<BR>    array("jing",'-16733'),<BR>    array("jiong",'-16708'),<BR>    array("jiu",'-16706'),<BR>    array("ju",'-16689'),<BR>    array("juan",'-16664'),<BR>    array("jue",'-16657'),<BR>    array("jun",'-16647'),<BR>    array("ka",'-16474'),<BR>    array("kai",'-16470'),<BR>    array("kan",'-16465'),<BR>    array("kang",'-16459'),<BR>    array("kao",'-16452'),<BR>    array("ke",'-16448'),<BR>    array("ken",'-16433'),<BR>    array("keng",'-16429'),<BR>    array("kong",'-16427'),<BR>    array("kou",'-16423'),<BR>    array("ku",'-16419'),<BR>    array("kua",'-16412'),<BR>    array("kuai",'-16407'),<BR>    array("kuan",'-16403'),<BR>    array("kuang",'-16401'),<BR>    array("kui",'-16393'),<BR>    array("kun",'-16220'),<BR>    array("kuo",'-16216'),<BR>    array("la",'-16212'),<BR>    array("lai",'-16205'),<BR>    array("lan",'-16202'),<BR>    array("lang",'-16187'),<BR>    array("lao",'-16180'),<BR>    array("le",'-16171'),<BR>    array("lei",'-16169'),<BR>    array("leng",'-16158'),<BR>    array("li",'-16155'),<BR>    array("lia",'-15959'),<BR>    array("lian",'-15958'),<BR>    array("liang",'-15944'),<BR>    array("liao",'-15933'),<BR>    array("lie",'-15920'),<BR>    array("lin",'-15915'),<BR>    array("ling",'-15903'),<BR>    array("liu",'-15889'),<BR>    array("long",'-15878'),<BR>    array("lou",'-15707'),<BR>    array("lu",'-15701'),<BR>    array("lv",'-15681'),<BR>    array("luan",'-15667'),<BR>    array("lue",'-15661'),<BR>    array("lun",'-15659'),<BR>    array("luo",'-15652'),<BR>    array("ma",'-15640'),<BR>    array("mai",'-15631'),<BR>    array("man",'-15625'),<BR>    array("mang",'-15454'),<BR>    array("mao",'-15448'),<BR>    array("me",'-15436'),<BR>    array("mei",'-15435'),<BR>    array("men",'-15419'),<BR>    array("meng",'-15416'),<BR>    array("mi",'-15408'),<BR>    array("mian",'-15394'),<BR>    array("miao",'-15385'),<BR>    array("mie",'-15377'),<BR>    array("min",'-15375'),<BR>    array("ming",'-15369'),<BR>    array("miu",'-15363'),<BR>    array("mo",'-15362'),<BR>    array("mou",'-15183'),<BR>    array("mu",'-15180'),<BR>    array("na",'-15165'),<BR>    array("nai",'-15158'),<BR>    array("nan",'-15153'),<BR>    array("nang",'-15150'),<BR>    array("nao",'-15149'),<BR>    array("ne",'-15144'),<BR>    array("nei",'-15143'),<BR>    array("nen",'-15141'),<BR>    array("neng",'-15140'),<BR>    array("ni",'-15139'),<BR>    array("nian",'-15128'),<BR>    array("niang",'-15121'),<BR>    array("niao",'-15119'),<BR>    array("nie",'-15117'),<BR>    array("nin",'-15110'),<BR>    array("ning",'-15109'),<BR>    array("niu",'-14941'),<BR>    array("nong",'-14937'),<BR>    array("nu",'-14933'),<BR>    array("nv",'-14930'),<BR>    array("nuan",'-14929'),<BR>    array("nue",'-14928'),<BR>    array("nuo",'-14926'),<BR>    array("o",'-14922'),<BR>    array("ou",'-14921'),<BR>    array("pa",'-14914'),<BR>    array("pai",'-14908'),<BR>    array("pan",'-14902'),<BR>    array("pang",'-14894'),<BR>    array("pao",'-14889'),<BR>    array("pei",'-14882'),<BR>    array("pen",'-14873'),<BR>    array("peng",'-14871'),<BR>    array("pi",'-14857'),<BR>    array("pian",'-14678'),<BR>    array("piao",'-14674'),<BR>    array("pie",'-14670'),<BR>    array("pin",'-14668'),<BR>    array("ping",'-14663'),<BR>    array("po",'-14654'),<BR>    array("pu",'-14645'),<BR>    array("qi",'-14630'),<BR>    array("qia",'-14594'),<BR>    array("qian",'-14429'),<BR>    array("qiang",'-14407'),<BR>    array("qiao",'-14399'),<BR>    array("qie",'-14384'),<BR>    array("qin",'-14379'),<BR>    array("qing",'-14368'),<BR>    array("qiong",'-14355'),<BR>    array("qiu",'-14353'),<BR>    array("qu",'-14345'),<BR>    array("quan",'-14170'),<BR>    array("que",'-14159'),<BR>    array("qun",'-14151'),<BR>    array("ran",'-14149'),<BR>    array("rang",'-14145'),<BR>    array("rao",'-14140'),<BR>    array("re",'-14137'),<BR>    array("ren",'-14135'),<BR>    array("reng",'-14125'),<BR>    array("ri",'-14123'),<BR>    array("rong",'-14122'),<BR>    array("rou",'-14112'),<BR>    array("ru",'-14109'),<BR>    array("ruan",'-14099'),<BR>    array("rui",'-14097'),<BR>    array("run",'-14094'),<BR>    array("ruo",'-14092'),<BR>    array("sa",'-14090'),<BR>    array("sai",'-14087'),<BR>    array("san",'-14083'),<BR>    array("sang",'-13917'),<BR>    array("sao",'-13914'),<BR>    array("se",'-13910'),<BR>    array("sen",'-13907'),<BR>    array("seng",'-13906'),<BR>    array("sha",'-13905'),<BR>    array("shai",'-13896'),<BR>    array("shan",'-13894'),<BR>    array("shang",'-13878'),<BR>    array("shao",'-13870'),<BR>    array("she",'-13859'),<BR>    array("shen",'-13847'),<BR>    array("sheng",'-13831'),<BR>    array("shi",'-13658'),<BR>    array("shou",'-13611'),<BR>    array("shu",'-13601'),<BR>    array("shua",'-13406'),<BR>    array("shuai",'-13404'),<BR>    array("shuan",'-13400'),<BR>    array("shuang",'-13398'),<BR>    array("shui",'-13395'),<BR>    array("shun",'-13391'),<BR>    array("shuo",'-13387'),<BR>    array("si",'-13383'),<BR>    array("song",'-13367'),<BR>    array("sou",'-13359'),<BR>    array("su",'-13356'),<BR>    array("suan",'-13343'),<BR>    array("sui",'-13340'),<BR>    array("sun",'-13329'),<BR>    array("suo",'-13326'),<BR>    array("ta",'-13318'),<BR>    array("tai",'-13147'),<BR>    array("tan",'-13138'),<BR>    array("tang",'-13120'),<BR>    array("tao",'-13107'),<BR>    array("te",'-13096'),<BR>    array("teng",'-13095'),<BR>    array("ti",'-13091'),<BR>    array("tian",'-13076'),<BR>    array("tiao",'-13068'),<BR>    array("tie",'-13063'),<BR>    array("ting",'-13060'),<BR>    array("tong",'-12888'),<BR>    array("tou",'-12875'),<BR>    array("tu",'-12871'),<BR>    array("tuan",'-12860'),<BR>    array("tui",'-12858'),<BR>    array("tun",'-12852'),<BR>    array("tuo",'-12849'),<BR>    array("wa",'-12838'),<BR>    array("wai",'-12831'),<BR>    array("wan",'-12829'),<BR>    array("wang",'-12812'),<BR>    array("wei",'-12802'),<BR>    array("wen",'-12607'),<BR>    array("weng",'-12597'),<BR>    array("wo",'-12594'),<BR>    array("wu",'-12585'),<BR>    array("xi",'-12556'),<BR>    array("xia",'-12359'),<BR>    array("xian",'-12346'),<BR>    array("xiang",'-12320'),<BR>    array("xiao",'-12300'),<BR>    array("xie",'-12120'),<BR>    array("xin",'-12099'),<BR>    array("xing",'-12089'),<BR>    array("xiong",'-12074'),<BR>    array("xiu",'-12067'),<BR>    array("xu",'-12058'),<BR>    array("xuan",'-12039'),<BR>    array("xue",'-11867'),<BR>    array("xun",'-11861'),<BR>    array("ya",'-11847'),<BR>    array("yan",'-11831'),<BR>    array("yang",'-11798'),<BR>    array("yao",'-11781'),<BR>    array("ye",'-11604'),<BR>    array("yi",'-11589'),<BR>    array("yin",'-11536'),<BR>    array("ying",'-11358'),<BR>    array("yo",'-11340'),<BR>    array("yong",'-11339'),<BR>    array("you",'-11324'),<BR>    array("yu",'-11303'),<BR>    array("yuan",'-11097'),<BR>    array("yue",'-11077'),<BR>    array("yun",'-11067'),<BR>    array("za",'-11055'),<BR>    array("zai",'-11052'),<BR>    array("zan",'-11045'),<BR>    array("zang",'-11041'),<BR>    array("zao",'-11038'),<BR>    array("ze",'-11024'),<BR>    array("zei",'-11020'),<BR>    array("zen",'-11019'),<BR>    array("zeng",'-11018'),<BR>    array("zha",'-11014'),<BR>    array("zhai",'-10838'),<BR>    array("zhan",'-10832'),<BR>    array("zhang",'-10815'),<BR>    array("zhao",'-10800'),<BR>    array("zhe",'-10790'),<BR>    array("zhen",'-10780'),<BR>    array("zheng",'-10764'),<BR>    array("zhi",'-10587'),<BR>    array("zhong",'-10544'),<BR>    array("zhou",'-10533'),<BR>    array("zhu",'-10519'),<BR>    array("zhua",'-10331'),<BR>    array("zhuai",'-10329'),<BR>    array("zhuan",'-10328'),<BR>    array("zhuang",'-10322'),<BR>    array("zhui",'-10315'),<BR>    array("zhun",'-10309'),<BR>    array("zhuo",'-10307'),<BR>    array("zi",'-10296'),<BR>    array("zong",'-10281'),<BR>    array("zou",'-10274'),<BR>    array("zu",'-10270'),<BR>    array("zuan",'-10262'),<BR>    array("zui",'-10260'),<BR>    array("zun",'-10256'),<BR>    array("zuo",'-10254')<BR>    );<BR>    //拼音转化函数<BR>    function PinYin($str){<BR>        $ret="";<BR>        for($i=0;$i<strlen($str);$i++){<BR>            $p=ord(substr($str,$i,1)); //查看ASCII码<BR>            if($p>160){ //如果是中文,再多截取一个字符<BR>                $q=ord(substr($str,++$i,1));<BR>                $p=$p*256+$q-65536;<BR>            }<BR>            $ret.=$this->convert($p);<BR>        }<BR>        return $ret;<BR>    }<br><br>    //转化函数<BR>    function convert($num){<BR>        if($num>0&&$num<160){ //如果不是汉字,直接返回相对字符<BR>            return chr($num);<BR>        }elseif($num"-10247"){<BR>            return "";<BR>        }else{ //汉字,查找对应拼音<BR>            for($i=count($this->_code)-1;$i>=0;$i--){<BR>                if($this->_code[$i][1]<=$num)<BR>                break;<BR>            }<BR>            return substr($this->_code[$i][0],0,1);<BR>        }<BR>    }<BR>}

下面这个是用来测试代码的:

<?php</P><P>include_once 'charset.class.php';<BR>header('Content-type: text/html;charset=utf-8');</P><P>$charset=new charset();<BR>foreach(array('武汉','中国','上海') as $val){<BR> echo iconv('gbk','utf-8//IGNORE',strtoupper($charset->PinYin(mb_convert_encoding($val,'gbk','utf-8'))));<BR> echo '<br />';<BR>}

三、这是网上找到个一个方法,经过测试可以正常使用,但对一些生僻字或者特殊字符会有问题.

function getFirstCharter($str){<BR> if(empty($str)){return '';}<BR> $fchar=ord($str{0});<BR> if($fchar>=ord('A')&&$fchar<=ord('z')) return strtoupper($str{0});<BR> $s1=iconv('UTF-8','gb2312',$str);<BR> $s2=iconv('gb2312','UTF-8',$s1);<BR> $s=$s2==$str?$s1:$str;<BR> $asc=ord($s{0})*256+ord($s{1})-65536;<BR> if($asc>=-20319&&$asc<=-20284) return 'A';<BR> if($asc>=-20283&&$asc<=-19776) return 'B';<BR> if($asc>=-19775&&$asc<=-19219) return 'C';<BR> if($asc>=-19218&&$asc<=-18711) return 'D';<BR> if($asc>=-18710&&$asc<=-18527) return 'E';<BR> if($asc>=-18526&&$asc<=-18240) return 'F';<BR> if($asc>=-18239&&$asc<=-17923) return 'G';<BR> if($asc>=-17922&&$asc<=-17418) return 'H';<BR> if($asc>=-17417&&$asc<=-16475) return 'J';<BR> if($asc>=-16474&&$asc<=-16213) return 'K';<BR> if($asc>=-16212&&$asc<=-15641) return 'L';<BR> if($asc>=-15640&&$asc<=-15166) return 'M';<BR> if($asc>=-15165&&$asc<=-14923) return 'N';<BR> if($asc>=-14922&&$asc<=-14915) return 'O';<BR> if($asc>=-14914&&$asc<=-14631) return 'P';<BR> if($asc>=-14630&&$asc<=-14150) return 'Q';<BR> if($asc>=-14149&&$asc<=-14091) return 'R';<BR> if($asc>=-14090&&$asc<=-13319) return 'S';<BR> if($asc>=-13318&&$asc<=-12839) return 'T';<BR> if($asc>=-12838&&$asc<=-12557) return 'W';<BR> if($asc>=-12556&&$asc<=-11848) return 'X';<BR> if($asc>=-11847&&$asc<=-11056) return 'Y';<BR> if($asc>=-11055&&$asc<=-10247) return 'Z';<BR> return null;</P><P>}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php获取中文拼音首字母类和函数分享_php实例
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址