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