PHP获取汉字的拼音(全部与首字母)(转载博博客园2778085001)

<?php

class GetPingYing {

    private $pylist = array(

‘a‘=>-20319,

‘ai‘=>-20317,

‘an‘=>-20304,

‘ang‘=>-20295,

‘ao‘=>-20292,

‘ba‘=>-20283,

‘bai‘=>-20265,

‘ban‘=>-20257,

‘bang‘=>-20242,

‘bao‘=>-20230,

‘bei‘=>-20051,

‘ben‘=>-20036,

‘beng‘=>-20032,

‘bi‘=>-20026,

‘bian‘=>-20002,

‘biao‘=>-19990,

‘bie‘=>-19986,

‘bin‘=>-19982,

‘bing‘=>-19976,

‘bo‘=>-19805,

‘bu‘=>-19784,

‘ca‘=>-19775,

‘cai‘=>-19774,

‘can‘=>-19763,

‘cang‘=>-19756,

‘cao‘=>-19751,

‘ce‘=>-19746,

‘ceng‘=>-19741,

‘cha‘=>-19739,

‘chai‘=>-19728,

‘chan‘=>-19725,

‘chang‘=>-19715,

‘chao‘=>-19540,

‘che‘=>-19531,

‘chen‘=>-19525,

‘cheng‘=>-19515,

‘chi‘=>-19500,

‘chong‘=>-19484,

‘chou‘=>-19479,

‘chu‘=>-19467,

‘chuai‘=>-19289,

‘chuan‘=>-19288,

‘chuang‘=>-19281,

‘chui‘=>-19275,

‘chun‘=>-19270,

‘chuo‘=>-19263,

‘ci‘=>-19261,

‘cong‘=>-19249,

‘cou‘=>-19243,

‘cu‘=>-19242,

‘cuan‘=>-19238,

‘cui‘=>-19235,

‘cun‘=>-19227,

‘cuo‘=>-19224,

‘da‘=>-19218,

‘dai‘=>-19212,

‘dan‘=>-19038,

‘dang‘=>-19023,

‘dao‘=>-19018,

‘de‘=>-19006,

‘deng‘=>-19003,

‘di‘=>-18996,

‘dian‘=>-18977,

‘diao‘=>-18961,

‘die‘=>-18952,

‘ding‘=>-18783,

‘diu‘=>-18774,

‘dong‘=>-18773,

‘dou‘=>-18763,

‘du‘=>-18756,

‘duan‘=>-18741,

‘dui‘=>-18735,

‘dun‘=>-18731,

‘duo‘=>-18722,

‘e‘=>-18710,

‘en‘=>-18697,

‘er‘=>-18696,

‘fa‘=>-18526,

‘fan‘=>-18518,

‘fang‘=>-18501,

‘fei‘=>-18490,

‘fen‘=>-18478,

‘feng‘=>-18463,

‘fo‘=>-18448,

‘fou‘=>-18447,

‘fu‘=>-18446,

‘ga‘=>-18239,

‘gai‘=>-18237,

‘gan‘=>-18231,

‘gang‘=>-18220,

‘gao‘=>-18211,

‘ge‘=>-18201,

‘gei‘=>-18184,

‘gen‘=>-18183,

‘geng‘=>-18181,

‘gong‘=>-18012,

‘gou‘=>-17997,

‘gu‘=>-17988,

‘gua‘=>-17970,

‘guai‘=>-17964,

‘guan‘=>-17961,

‘guang‘=>-17950,

‘gui‘=>-17947,

‘gun‘=>-17931,

‘guo‘=>-17928,

‘ha‘=>-17922,

‘hai‘=>-17759,

‘han‘=>-17752,

‘hang‘=>-17733,

‘hao‘=>-17730,

‘he‘=>-17721,

‘hei‘=>-17703,

‘hen‘=>-17701,

‘heng‘=>-17697,

‘hong‘=>-17692,

‘hou‘=>-17683,

‘hu‘=>-17676,

‘hua‘=>-17496,

‘huai‘=>-17487,

‘huan‘=>-17482,

‘huang‘=>-17468,

‘hui‘=>-17454,

‘hun‘=>-17433,

‘huo‘=>-17427,

‘ji‘=>-17417,

‘jia‘=>-17202,

‘jian‘=>-17185,

‘jiang‘=>-16983,

‘jiao‘=>-16970,

‘jie‘=>-16942,

‘jin‘=>-16915,

‘jing‘=>-16733,

‘jiong‘=>-16708,

‘jiu‘=>-16706,

‘ju‘=>-16689,

‘juan‘=>-16664,

‘jue‘=>-16657,

‘jun‘=>-16647,

‘ka‘=>-16474,

‘kai‘=>-16470,

‘kan‘=>-16465,

‘kang‘=>-16459,

‘kao‘=>-16452,

‘ke‘=>-16448,

‘ken‘=>-16433,

‘keng‘=>-16429,

‘kong‘=>-16427,

‘kou‘=>-16423,

‘ku‘=>-16419,

‘kua‘=>-16412,

‘kuai‘=>-16407,

‘kuan‘=>-16403,

‘kuang‘=>-16401,

‘kui‘=>-16393,

‘kun‘=>-16220,

‘kuo‘=>-16216,

‘la‘=>-16212,

‘lai‘=>-16205,

‘lan‘=>-16202,

‘lang‘=>-16187,

‘lao‘=>-16180,

‘le‘=>-16171,

‘lei‘=>-16169,

‘leng‘=>-16158,

‘li‘=>-16155,

‘lia‘=>-15959,

‘lian‘=>-15958,

‘liang‘=>-15944,

‘liao‘=>-15933,

‘lie‘=>-15920,

‘lin‘=>-15915,

‘ling‘=>-15903,

‘liu‘=>-15889,

‘long‘=>-15878,

‘lou‘=>-15707,

‘lu‘=>-15701,

‘lv‘=>-15681,

‘luan‘=>-15667,

‘lue‘=>-15661,

‘lun‘=>-15659,

‘luo‘=>-15652,

‘ma‘=>-15640,

‘mai‘=>-15631,

‘man‘=>-15625,

‘mang‘=>-15454,

‘mao‘=>-15448,

‘me‘=>-15436,

‘mei‘=>-15435,

‘men‘=>-15419,

‘meng‘=>-15416,

‘mi‘=>-15408,

‘mian‘=>-15394,

‘miao‘=>-15385,

‘mie‘=>-15377,

‘min‘=>-15375,

‘ming‘=>-15369,

‘miu‘=>-15363,

‘mo‘=>-15362,

‘mou‘=>-15183,

‘mu‘=>-15180,

‘na‘=>-15165,

‘nai‘=>-15158,

‘nan‘=>-15153,

‘nang‘=>-15150,

‘nao‘=>-15149,

‘ne‘=>-15144,

‘nei‘=>-15143,

‘nen‘=>-15141,

‘neng‘=>-15140,

‘ni‘=>-15139,

‘nian‘=>-15128,

‘niang‘=>-15121,

‘niao‘=>-15119,

‘nie‘=>-15117,

‘nin‘=>-15110,

‘ning‘=>-15109,

‘niu‘=>-14941,

‘nong‘=>-14937,

‘nu‘=>-14933,

‘nv‘=>-14930,

‘nuan‘=>-14929,

‘nue‘=>-14928,

‘nuo‘=>-14926,

‘o‘=>-14922,

‘ou‘=>-14921,

‘pa‘=>-14914,

‘pai‘=>-14908,

‘pan‘=>-14902,

‘pang‘=>-14894,

‘pao‘=>-14889,

‘pei‘=>-14882,

‘pen‘=>-14873,

‘peng‘=>-14871,

‘pi‘=>-14857,

‘pian‘=>-14678,

‘piao‘=>-14674,

‘pie‘=>-14670,

‘pin‘=>-14668,

‘ping‘=>-14663,

‘po‘=>-14654,

‘pu‘=>-14645,

‘qi‘=>-14630,

‘qia‘=>-14594,

‘qian‘=>-14429,

‘qiang‘=>-14407,

‘qiao‘=>-14399,

‘qie‘=>-14384,

‘qin‘=>-14379,

‘qing‘=>-14368,

‘qiong‘=>-14355,

‘qiu‘=>-14353,

‘qu‘=>-14345,

‘quan‘=>-14170,

‘que‘=>-14159,

‘qun‘=>-14151,

‘ran‘=>-14149,

‘rang‘=>-14145,

‘rao‘=>-14140,

‘re‘=>-14137,

‘ren‘=>-14135,

‘reng‘=>-14125,

‘ri‘=>-14123,

‘rong‘=>-14122,

‘rou‘=>-14112,

‘ru‘=>-14109,

‘ruan‘=>-14099,

‘rui‘=>-14097,

‘run‘=>-14094,

‘ruo‘=>-14092,

‘sa‘=>-14090,

‘sai‘=>-14087,

‘san‘=>-14083,

‘sang‘=>-13917,

‘sao‘=>-13914,

‘se‘=>-13910,

‘sen‘=>-13907,

‘seng‘=>-13906,

‘sha‘=>-13905,

‘shai‘=>-13896,

‘shan‘=>-13894,

‘shang‘=>-13878,

‘shao‘=>-13870,

‘she‘=>-13859,

‘shen‘=>-13847,

‘sheng‘=>-13831,

‘shi‘=>-13658,

‘shou‘=>-13611,

‘shu‘=>-13601,

‘shua‘=>-13406,

‘shuai‘=>-13404,

‘shuan‘=>-13400,

‘shuang‘=>-13398,

‘shui‘=>-13395,

‘shun‘=>-13391,

‘shuo‘=>-13387,

‘si‘=>-13383,

‘song‘=>-13367,

‘sou‘=>-13359,

‘su‘=>-13356,

‘suan‘=>-13343,

‘sui‘=>-13340,

‘sun‘=>-13329,

‘suo‘=>-13326,

‘ta‘=>-13318,

‘tai‘=>-13147,

‘tan‘=>-13138,

‘tang‘=>-13120,

‘tao‘=>-13107,

‘te‘=>-13096,

‘teng‘=>-13095,

‘ti‘=>-13091,

‘tian‘=>-13076,

‘tiao‘=>-13068,

‘tie‘=>-13063,

‘ting‘=>-13060,

‘tong‘=>-12888,

‘tou‘=>-12875,

‘tu‘=>-12871,

‘tuan‘=>-12860,

‘tui‘=>-12858,

‘tun‘=>-12852,

‘tuo‘=>-12849,

‘wa‘=>-12838,

‘wai‘=>-12831,

‘wan‘=>-12829,

‘wang‘=>-12812,

‘wei‘=>-12802,

‘wen‘=>-12607,

‘weng‘=>-12597,

‘wo‘=>-12594,

‘wu‘=>-12585,

‘xi‘=>-12556,

‘xia‘=>-12359,

‘xian‘=>-12346,

‘xiang‘=>-12320,

‘xiao‘=>-12300,

‘xie‘=>-12120,

‘xin‘=>-12099,

‘xing‘=>-12089,

‘xiong‘=>-12074,

‘xiu‘=>-12067,

‘xu‘=>-12058,

‘xuan‘=>-12039,

‘xue‘=>-11867,

‘xun‘=>-11861,

‘ya‘=>-11847,

‘yan‘=>-11831,

‘yang‘=>-11798,

‘yao‘=>-11781,

‘ye‘=>-11604,

‘yi‘=>-11589,

‘yin‘=>-11536,

‘ying‘=>-11358,

‘yo‘=>-11340,

‘yong‘=>-11339,

‘you‘=>-11324,

‘yu‘=>-11303,

‘yuan‘=>-11097,

‘yue‘=>-11077,

‘yun‘=>-11067,

‘za‘=>-11055,

‘zai‘=>-11052,

‘zan‘=>-11045,

‘zang‘=>-11041,

‘zao‘=>-11038,

‘ze‘=>-11024,

‘zei‘=>-11020,

‘zen‘=>-11019,

‘zeng‘=>-11018,

‘zha‘=>-11014,

‘zhai‘=>-10838,

‘zhan‘=>-10832,

‘zhang‘=>-10815,

‘zhao‘=>-10800,

‘zhe‘=>-10790,

‘zhen‘=>-10780,

‘zheng‘=>-10764,

‘zhi‘=>-10587,

‘zhong‘=>-10544,

‘zhou‘=>-10533,

‘zhu‘=>-10519,

‘zhua‘=>-10331,

‘zhuai‘=>-10329,

‘zhuan‘=>-10328,

‘zhuang‘=>-10322,

‘zhui‘=>-10315,

‘zhun‘=>-10309,

‘zhuo‘=>-10307,

‘zi‘=>-10296,

‘zong‘=>-10281,

‘zou‘=>-10274,

‘zu‘=>-10270,

‘zuan‘=>-10262,

‘zui‘=>-10260,

‘zun‘=>-10256,

‘zuo‘=>-10254

    );

    //全部拼音

    public function getAllPY($chinese, $delimiter = ‘‘, $length = 0) {

       $py = $this->zh_to_pys($chinese, $delimiter);

       if($length) {

           $py = substr($py, 0, $length);

       }

       return $py;

    }

    //拼音首个字母

    public function getFirstPY($chinese){

       $result = ‘‘ ;

       for ($i=0; $i<strlen($chinese); $i++) {

           $p = ord(substr($chinese,$i,1));

           if ($p>160) {

              $q = ord(substr($chinese,++$i,1));

              $p = $p*256 + $q - 65536;

           }

           $result .= substr($this->zh_to_py($p),0,1);

       }

       return $result ;

    }

  

 

    //-------------------中文转拼音--------------------------------//

    private function zh_to_py($num, $blank = ‘‘) {

       if($num>0 && $num<160 ) {

           return chr($num);

       } elseif ($num<-20319||$num>-10247) {

           return $blank;

       } else {

           foreach ($this->pylist as $py => $code) {

              if($code > $num) break;

              $result = $py;

           }

           return $result;

       }

    }

  

 

    private function zh_to_pys($chinese, $delimiter = ‘ ‘, $first=0){

       $result = array();

       for($i=0; $i<strlen($chinese); $i++) {

           $p = ord(substr($chinese,$i,1));

           if($p>160) {

              $q = ord(substr($chinese,++$i,1));

              $p = $p*256 + $q - 65536;

           }

           $result[] = $this->zh_to_py($p);

           if ($first) {

              return $result[0];

           }

       }

       return implode($delimiter, $result);

    }

}

//-------------------------中文转拼音结束--------------------------------//

//中文是双字节,所以需要两个字节连接起来(ASCII码的范围是在161-255)

$c = ‘齐秦‘;

for($i=0; $i<strlen($c); $i++) {

    echo ord($c[$i]).‘ ‘;//198 235 199 216

}

echo ‘<br>‘,chr(198).chr(235).chr(199).chr(216),‘<br>‘;

  

 

//测试

$PingYing = new GetPingYing();

echo ‘<br>‘,$PingYing->getFirstPY(‘羽泉乐队,歌不错-推荐‘),‘<br>‘;//yqldgbc-tj

echo $PingYing->getAllPY(‘羽泉乐队,歌不错-推荐‘),‘<br>‘;   //yuquanleduigebucuo-tuijian

?>

时间: 2024-10-21 03:13:55

PHP获取汉字的拼音(全部与首字母)(转载博博客园2778085001)的相关文章

PHP获取汉字的拼音(全部与首字母)(转载)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 8

java汉字转拼音以及得到首字母通用方法

1. [代码]PingYinUtil    package oa.common.utils; import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;import net.sourceforge.pinyin4j.form

C# 获取汉字的拼音首字母(转)

原文:https://blog.csdn.net/younghaiqing/article/details/62417269 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicode编码表中的排序来确定拼音的首字母.碰到多音字时就以常用的为准(第一种方法中可以自行更改,方法为手动把该汉字移动到对应的拼音首字母队列,我们这里介绍第二种. 获取汉字拼音的首字母是一个在做项目的过程中经常需要用到的功能,今天我们主要来探讨下C# 获取汉字的拼音首字母 static void Main

iOS获取汉字的拼音

在iOS开发中经常涉及到汉字的排序,最常见的就是需要根据首字母的字符顺序排列,比如常见的通讯录等.总结出来,大致可以分为两种方法,其中参考文献[1]中提供的方法十分复杂,并且代码量很大,不建议采用.另一种方法是直接采用Core Foundation中提供的方法,十分简单,封装好的代码如下: 1 - (NSString *)transform:(NSString *)chinese{ 2 //将NSString装换成NSMutableString 3 NSMutableString *pinyin

C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母

汉字转拼音貌似一直是C#开发的一个难题,无论什么方案都有一定的bug,之前使用了两种方案. 1.Chinese2Spell.cs 一些不能识别的汉字全部转为Z 2.Microsoft Visual Studio International Feature Pack 1.0  连"广".“区”都不能转,很让人失望. 这些都是2010年以前的方案,至少还有大侠在为汉字转拼音不断努力着,目前发现最完美的就是NPINYIN,在googlecode可以看到它的开源项目,http://code.g

取汉字的第一个字的首字母

/** * 取汉字的第一个字的首字母 * @param type $str * @return string|null */ function getFirstCharter($str){ if(empty($str)){return '';} $str=preg_replace('/·/', "", $str); $fchar=ord($str{0}); if($fchar>=ord('A')&&$fchar<=ord('z')) return strto

java获取汉字拼音首字母 --转载

在项目中要更能根据某些查询条件(比如姓名)的首字母作为条件进行查询,比如查一个叫"李晓明"的人,可以输入'lxm'.写了一个工具类如下: import java.io.UnsupportedEncodingException; /** * 取得给定汉字串的首字母串,即声母串 * Title: ChineseCharToEn * @date 2004-02-19 注:只支持GB2312字符集中的汉字 */ public final class ChineseCharToEn { priv

C# 获取汉字的拼音首字母

/// <summary> /// 在指定的字符串列表CnStr中检索符合拼音索引字符串 /// </summary> /// <param name="CnStr">汉字字符串</param> /// <returns>相对应的汉语拼音首字母串</returns> public static string GetSpellCode(string CnStr) { string strTemp="&quo

sql获取汉字的拼音首字母

if exists (select * from sysobjects where id = object_id(N'[fn_ChineseToSpell]') and xtype in (N'FN', N'IF', N'TF')) www.2cto.com drop function [fn_ChineseToSpell]GO/*创建取拼音首字母函数*/ create function [dbo].[fn_ChineseToSpell](@strChinese varchar(500)='')