php将中文输出拼音代码(php将中文输出拼音代码变成英文)

发布时间:2022-11-14

本文目录一览:

  1. 谁有php 汉字转拼音的 代码
  2. php 中文转拼音首字母问题
  3. php汉字转拼音问题 下

谁有php 汉字转拼音的 代码

php 汉字转拼音的 代码

/**
 * PHP 汉字转拼音
 * @author Jerryli(hzjerry@gmail.com)
 * @version V0.20140715
 * @package SPFW.core.lib.final
 * @global SEA_PHP_FW_VAR_ENV
 * @example
 *   echo CUtf8_PY::encode('阿里巴巴科技有限公司'); //编码为拼音首字母
 *   echo CUtf8_PY::encode('阿里巴巴科技有限公司', 'all'); //编码为全拼音
 */
class CUtf8_PY {
    /**
     * 拼音字符转换图
     * @var array
     */
    private static $_aMaps = 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' => -17728, 'he' => -17722, 'hei' => -17710, 'hen' => -17708, 'heng' => -17697, 'hong' => -17694, 'hou' => -17681, 'hu' => -17674, 'hua' => -17470, 'huai' => -17463, 'huan' => -17458, 'huang' => -17448, 'hui' => -17433, 'hun' => -17427, 'huo' => -17417,
        'ji' => -17222, 'jia' => -17211, 'jian' => -17202, 'jiang' => -17185, 'jiao' => -17170, 'jie' => -16942, 'jin' => -16915, 'jing' => -16733, 'jiong' => -16708, 'ju' => -16706, 'juan' => -16689, 'jue' => -16664, 'jun' => -16659, 'ka' => -16651, 'kai' => -16647, 'kan' => -16474, 'kang' => -16470, 'kao' => -16465, 'ke' => -16459, 'ken' => -16452, 'keng' => -16448, 'kong' => -16433, 'kou' => -16429, 'ku' => -16410, 'kua' => -16401, 'kuai' => -16393, 'kuan' => -16220, 'kuang' => -16215, 'kui' => -16212, 'kun' => -16205, 'kuo' => -16202,
        'la' => -16187, 'lai' => -16180, 'lan' => -16171, 'lang' => -16169, 'lao' => -16158, 'le' => -16144, 'lei' => -16137, 'leng' => -16124, 'li' => -16112, 'lia' => -16103, 'lian' => -16090, 'liang' => -16064, 'liao' => -16055, 'lie' => -16040, 'lin' => -16020, 'ling' => -16000, 'liu' => -15989, 'long' => -15973, 'lou' => -15970, 'lu' => -15943, 'lv' => -15941, 'luan' => -15935, 'lue' => -15932, 'lun' => -15910, 'luo' => -15903,
        'ma' => -15889, 'mai' => -15878, 'man' => -15870, 'mang' => -15866, 'mao' => -15862, 'me' => -15858, 'mei' => -15855, 'men' => -15845, 'meng' => -15831, 'mi' => -15767, 'mian' => -15756, 'miao' => -15750, 'mie' => -15745, 'min' => -15740, 'ming' => -15731, 'miu' => -15722, 'mo' => -15718, 'mou' => -15703, 'mu' => -15701,
        'na' => -15681, 'nai' => -15667, 'nan' => -15661, 'nang' => -15659, 'nao' => -15652, 'ne' => -15640, 'nei' => -15631, 'nen' => -15622, 'neng' => -15618, 'ni' => -15611, 'nia' => -15609, 'nian' => -15596, 'niang' => -15584, 'niao' => -15582, 'nie' => -15575, 'nin' => -15569, 'ning' => -15563, 'niu' => -15557, 'nu' => -15551, 'nv' => -15540, 'nuan' => -15531, 'nue' => -15525, 'nuo' => -15524,
        'o' => -15520, 'ou' => -15511,
        'pa' => -15501, 'pai' => -15499, 'pan' => -15491, 'pang' => -15385, 'pao' => -15377, 'pei' => -15375, 'pen' => -15369, 'peng' => -15363, 'pi' => -15362, 'pian' => -15350, 'piao' => -15333, 'pie' => -15328, 'pin' => -15323, 'ping' => -15313, 'po' => -15306, 'pu' => -15305,
        'qi' => -15120, 'qia' => -15119, 'qian' => -15117, 'qiang' => -15110, 'qiao' => -15109, 'qie' => -14941, 'qin' => -14937, 'qing' => -14929, 'qiong' => -14928, 'qu' => -14926, 'quan' => -14922, 'que' => -14921, 'qun' => -14914,
        'ran' => -14912, 'rang' => -14910, 'rao' => -14908, 're' => -14907, 'ren' => -14906, 'reng' => -14905, 'ri' => -14904, 'rong' => -14903, 'rou' => -14902, 'ru' => -14901, 'ruan' => -14899, 'rui' => -14897, 'run' => -14896, 'ruo' => -14894,
        'sa' => -14889, 'sai' => -14882, 'san' => -14873, 'sang' => -14871, 'sao' => -14857, 'se' => -14678, 'sen' => -14674, 'seng' => -14670, 'sha' => -14668, 'shai' => -14663, 'shan' => -14654, 'shang' => -14645, 'shao' => -14630, 'she' => -14594, 'shen' => -14429, 'sheng' => -14418, 'shi' => -14404, 'shou' => -14384, 'shu' => -14379, 'shua' => -14368, 'shuai' => -14355, 'shuan' => -14353, 'shuang' => -14345, 'shui' => -14170, 'shun' => -14159, 'shuo' => -14151,
        'si' => -14149, 'song' => -14145, 'sou' => -14143, 'su' => -14138, 'suan' => -14123, 'sui' => -14122, 'sun' => -14112, 'suo' => -14109,
        'ta' => -14099, 'tai' => -14097, 'tan' => -14094, 'tang' => -14092, 'tao' => -14090, 'te' => -14087, 'teng' => -14083, 'ti' => -13912, 'tian' => -13910, 'tiao' => -13907, 'tie' => -13906, 'ting' => -13905, 'tong' => -13896, 'tou' => -13894, 'tu' => -13878, 'tuan' => -13870, 'tui' => -13859, 'tun' => -13847, 'tuo' => -13831,
        'wa' => -13830, 'wai' => -13821, 'wan' => -13817, 'wang' => -13808, 'wei' => -13799, 'wen' => -13780, 'weng' => -13776, 'wo' => -13775,
        'xi' => -13774, 'xia' => -13762, 'xian' => -13761, 'xiang' => -13747, 'xiao' => -13746, 'xie' => -13696, 'xin' => -13695, 'xing' => -13694, 'xiong' => -13683, 'xiu' => -13680, 'xu' => -13677, 'xuan' => -13675, 'xue' => -13673, 'xun' => -13670,
        'ya' => -13665, 'yan' => -13663, 'yang' => -13658, 'yao' => -13647, 'ye' => -13631, 'yi' => -13630, 'yin' => -13617, 'ying' => -13594, 'yo' => -13579, 'yong' => -13566, 'you' => -13562, 'yu' => -13543, 'yuan' => -13530, 'yue' => -13528, 'yun' => -13524,
        'za' => -13517, 'zai' => -13501, 'zan' => -13487, 'zang' => -13483, 'zao' => -13467, 'ze' => -13452, 'zei' => -13451, 'zen' => -13450, 'zeng' => -13442, 'zha' => -13430, 'zhai' => -13419, 'zhan' => -13404, 'zhang' => -13396, 'zhao' => -13395, 'zhe' => -13391, 'zhen' => -13387, 'zheng' => -13383, 'zhi' => -13367, 'zhong' => -13359, 'zhou' => -13356, 'zhu' => -13343, 'zhua' => -13340, 'zhuai' => -13329, 'zhuan' => -13326, 'zhuang' => -13318, 'zhui' => -13147, 'zhun' => -13138, 'zhuo' => -13120,
        'zi' => -13107, 'zong' => -13096, 'zou' => -13095, 'zu' => -13091, 'zuan' => -13076, 'zui' => -13068, 'zun' => -13063, 'zuo' => -13061
    );
    /**
     * 将UTF-8编码的字符串转换为拼音
     * @param string $str
     * @param string $mode 'initial'表示首字母,'all'表示全拼
     * @return string
     */
    public static function encode($str, $mode = 'initial') {
        $result = '';
        $len = mb_strlen($str, 'UTF-8');
        for ($i = 0; $i < $len; $i++) {
            $char = mb_substr($str, $i, 1, 'UTF-8');
            $code = self::utf8_to_unicode($char);
            if ($code > 0xA0) {
                $py = self::find_pinyin($code);
                if ($py) {
                    if ($mode === 'initial') {
                        $result .= strtoupper(substr($py, 0, 1));
                    } else {
                        $result .= $py;
                    }
                } else {
                    $result .= $char;
                }
            } else {
                $result .= $char;
            }
        }
        return $result;
    }
    /**
     * UTF-8字符转Unicode编码
     * @param string $char
     * @return int
     */
    private static function utf8_to_unicode($char) {
        switch (strlen($char)) {
            case 1:
                return ord($char);
            case 2:
                $n = (ord($char[0]) & 0x3f) << 6;
                $n += ord($char[1]) & 0x3f;
                return $n;
            case 3:
                $n = (ord($char[0]) & 0x1f) << 12;
                $n += (ord($char[1]) & 0x3f) << 6;
                $n += ord($char[2]) & 0x3f;
                return $n;
            case 4:
                $n = (ord($char[0]) & 0x0f) << 18;
                $n += (ord($char[1]) & 0x3f) << 12;
                $n += (ord($char[2]) & 0x3f) << 6;
                $n += ord($char[3]) & 0x3f;
                return $n;
        }
        return 0;
    }
    /**
     * 查找对应的拼音
     * @param int $code
     * @return string|false
     */
    private static function find_pinyin($code) {
        foreach (self::$_aMaps as $py => $start) {
            if ($code >= $start) {
                return $py;
            }
        }
        return false;
    }
}

php 中文转拼音首字母问题

原始代码有些问题,我做了些更改,原地址github 的 chenall/chenall/blob/master/php/tools/ZH-cn_TO_pinyin.php

/*
    中文汉字转拼音首字母的PHP简易实现方法.
    要求: 只能是GB2312码表里面中文字符
    转换得到字符串对应的拼音首字母大写.
    用法:
    echo zh2py::conv('Chinese 中华人民共和国');//Chinese ZHRMGHG
    或
    $py = new zh2py;
    echo $py->conv('Chinese 中华人民共和国');//Chinese ZHRMGHG
*/
class zh2py
{
    //根据汉字区位表
    //我们可以看到从16-55区之间是按拼音字母排序的,所以我们只需要判断某个汉字的区位码就可以得知它的拼音首字母.
    //区位表第一部份,按拼音字母排序的.
    //16区-55区
    /*
    'A'=0xB0A1, 'B'=0xB0C5, 'C'=0xB2C1, 'D'=0xB4EE, 'E'=0xB6EA, 'F'=0xB7A2, 'G'=0xB8C1,'H'=0xB9FE,
    'J'=0xBBF7, 'K'=0xBFA6, 'L'=0xC0AC, 'M'=0xC2E8, 'N'=0xC4C3, 'O'=0xC5B6, 'P'=0xC5BE,'Q'=0xC6DA,
    'R'=0xC8BB, 'S'=0xC8F6, 'T'=0xCBFA, 'W'=0xCDDA, 'X'=0xCEF4, 'Y'=0xD1B9, 'Z'=0xD4D1
    */
    private static $FirstTable = array(
    0xB0C5, 0xB2C1, 0xB4EE, 0xB6EA, 0xB7A2, 0xB8C1, 0xB9FE, 0xBBF7, 0xBFA6, 0xC0AC, 0xC2E8,
    0xC4C3, 0xC5B6, 0xC5BE, 0xC6DA, 0xC8BB, 0xC8F6, 0xCBFA, 0xCDDA, 0xCEF4, 0xD1B9, 0xD4D1,0xD7FA
    );
    private static $FirstLetter = "ABCDEFGHJKLMNOPQRSTWXYZ";
    //区位表第二部份,不规则的,下面的字母是每个区里面对应字的拼音首字母.从网上查询整理出来的,可能会有部份错误.
    //56区-87区
    private static $SecondTable = array(
    "CJWGNSPGCGNEGYPBTYYZDXYKYGTZJNMJQMBSGZSCYJSYYFPGKBZGYDYWJKGKLJSWKPJQHYJWRDZLSYMRYPYWWCCKZNKYYG",
    "TTNGJEYKKZYTCJNMCYLQLYPYSFQRPZSLWBTGKJFYXJWZLTBNCXJJJJTXDTTSQZYCDXXHGCKBPHFFSSTYBGMXLPBYLLBHLX",
    "SMZMYJHSOJNGHDZQYKLGJHSGQZHXQGKXZZWYSCSCJXYEYXADZPMDSSMZJZQJYZCJJFWQJBDZBXGZNZCPWHWXHQKMWFBPBY",
    "DTJZZKXHYLYGXFPTYJYYZPSZLFCHMQSHGMXXSXJYQDCSBBQBEFSJYHWWGZKPYLQBGLDLCDTNMAYDDKSSNGYCSGXLYZAYPN",
    "PTSDKDYLHGYMYLCXPYCJNDQJWXQXFYYFJLEJPZRXCCQWQQSBZKYMGPLBMJRQCFLNYMYQMSQYRBCJTHZTQFRXQHXMQJCJLY",
    "QGJMSHZKBSWYEMYLTXFSYDXWLYCJQXSJNQBSCTYHBFTDCYZDJWYGHQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCL",
    "QKXLHXJRZJMFQHXHWYWSBHTRXXGLHQHFNMGYKLDYXZPYLGGSMTCFBAJJZYLJTYANJGBJPLQGSZYQYAXBKYSECJSZNSLYZH",
    "ZXLZCGHPXZHZNYTDSBCJKDLZAYFFYDLEBBGQYZKXGLDNDNYSKJSHDLYXBCGHXYPKDJMMZNGMMCLGWZSZXZJFZNMLZZTHCS",
    "YDBDLLSCDDNLKJYKJSYCJLKWHQASDKNHCSGAGHDAASHTCPLCPQYBSZMPJLPCJOQLCDHJJYSPRCHNWJNLHLYYQYYWZPTCZG",
    "WWMZFFJQQQQYXACLBHKDJXDGMMYDJXZLLSYGXGKJRYWZWYCLZMSSJZLDBYDCFCXYHLXCHYZJQSQQAGMNYXPFRKSSBJLYXY",
    "SYGLNSCMHCWWMNZJJLXXHCHSYZSTTXRYCYXBYHCSMXJSZNPWGPXXTAYBGAJCXLYXDCCWZOCWKCCSBNHCPDYZNFCYYTYCKX",
    "KYBSQKKYTQQXFCMCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQKZPQSQSCFYMMDMGBWHWLGSLLYSDLMLXPTHMJ",
    "HWLJZYHZJXKTXJLHXRSWLWZJCBXMHZQXSDZPSGFCSGLSXYMJSHXPJXWMYQKSMYPLRTHBXFTPMHYXLCHLHLZYLXGSSSSTCL",
    "SLDCLRPBHZHXYYFHBMGDMYCNQQWLQHJJCYWJZYEJJDHPBLQXTQKWHLCHQXAGTLXLJXMSLJHTZKZJECXJCJNMFBYCSFYWYB",
    "JZGNYSDZSQYRSLJPCLPWXSDWEJBJCBCNAYTWGMPAPCLYQPCLZXSBNMSGGFNZJJBZSFZYNTXHPLQKZCZWALSBCZJXSYZGWK",
    "YPSGXFZFCDKHJGXTLQFSGDSLQWZKXTMHSBGZMJZRGLYJBPMLMSXLZJQQHZYJCZYDJWFMJKLDDPMJEGXYHYLXHLQYQHKYCW",
    "CJMYYXNATJHYCCXZPCQLBZWWYTWBQCMLPMYRJCCCXFPZNZZLJPLXXYZTZLGDLTCKLYRZZGQTTJHHHJLJAXFGFJZSLCFDQZ",
    "LCLGJDJZSNZLLJPJQDCCLCJXMYZFTSXGCGSBRZXJQQCTZHGYQTJQQLZXJYLYLBCYAMCSTYLPDJBYREGKLZYZHLYSZQLZNW",
    "CZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTXYXNBSKYZZGJZLQJTFCJXDYGJQJJPMGWGJJJPKQSB",
    "GBMMCJSSCLPQPDXCDYYKYPCJDDYYGYWRHJRTGZNYQLDKLJSZZGZQZJGDYKSHPZMTLCPWNJYFYZDJCNMWESCYGLBTZZGMSS",
    "LLYXYSXXBSJSBBSGGHFJLYPMZJNLYYWDQSHZXTYYWHMCYHYWDBXBTLMSYYYFSXJCBDXXLHJHFSSXZQHFZMZCZTQCXZXRTT",
    "DJHNRYZQQMTQDMMGNYDXMJGDXCDYZBFFALLZTDLTFXMXQZDNGWQDBDCZJDXBZGSQQDDJCMBKZFFXMKDMDSYYSZCMLJDSYN",
    "SPRSKMKMPCKLGTBQTFZSWTFGGLYPLLJZHGJJGYPZLTCSMCNBTJBQFKDHBYZGKPBBYMTDSSXTBNPDKLEYCJNYCDYKZTDHQH",
    "SYZSCTARLLTKZLGECLLKJLQJAQNBDKKGHPJTZQKSECSHALQFMMGJNLYJBBTMLYZXDXJPLDLPCQDHZYCBZSCZBZMSLJFLKR",
    "ZJSNFRGJHXPDHYJYBZGDLQCSEZGXLBLGYXTWMABCHECMWYJYZLLJJYHLGNDJLSLYGKDZPZXJYYZLWCXSZFGWYYDLYHCLJS",
    "CMBJHBLYZLYCBLYDPDQYSXQZBYTDKYXJYYCNRJMPDJGKLCLJBCTBJDDBBLBLCZQRPYXJCJLZCSHLTOLJNMDDDLNGKATHQH",
    "JHYKHEZNMSHRPHQQJCHGMFPRXHJGDYCHGHLYRZQLCYQJNZSQTKQJYMSZSWLCFQQQXYFGGYPTQWLMCRNFKKFSYYLQBMQAMM",
    "MYXCTPSHCPTXXZZSMPHPSHMCLMLDQFYQXSZYJDJJZZHQPDSZGLSTJBCKBXYQZJSGPSXQZQZRQTBDKYXZKHHGFLBCSMDLDG",
    "DZDBLZYYCXNNCSYBZBFGLZZXSWMSCCMQNJQSBDQSJTXXMBLTXZCLZSHZCXRQJGJYLXZFJPHYMZQQYDFQJJLZZNZJCDGZYG",
    "CTXMZYSCTLKPHTXHTLBJXJLXSCDQXCBBTJFQZFSLTJBTKQBXXJJLJCHCZDBZJDCZJDCPRNPQCJPFCZLCLZXZDMXMPHJSGZ",
    "GSZZQLYLWTJPFSYASMCJBTZYYCWMYTZSJJLJCQLWZMALBXYFBPNLSFHTGJWEJJXXGLLJSTGSHJQLZFKCGNNNSZFDEQFHBS",
    "AQTGYLBXMMYGSZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXWCXYTTYBKMRTJZXQJBHLMHMJJZMQASLDCYXYQDLQCAFYWYXQHZ",
    );
    public static function utf8_to_gbk($string)//编码转换,必须转换成GB2312字符,这里只是简单的判断并不是很准确,可以自己写一个.
    {
    if (mb_check_encoding($string,'gb2312'))
        return $string;
    if (function_exists('iconv'))
        return iconv("utf-8","gb2312//IGNORE",$string);
    return mb_convert_encoding($string,'gb2312','utf-8'); 
    }
    public static function conv($str)
    {
    $str = self::utf8_to_gbk($str);
    $len = strlen($str);
    $newStr = '';
    for($i=0; $i < $len ; ++$i)
    {
        $H = ord($str[$i]);
        $L = ord($str[$i+1]);
        //字符集非法
        if ($H < 0xB0 ||  $L < 0xA1 || $H > 0xF7 || $L == 0xFF)
        {
        $newStr .= $str[$i];
        continue;
        }
        if ($H < 0xD8)//($H >= 0xB0 && $H <=0xD7)//查询文字在一级汉字区(16-55)
        {
        $W = ($H << 8) | $L;
        foreach(self::$FirstTable as $key=>$value)
        {
            if ($W < $value)
            {
            $newStr .= self::$FirstLetter[$key];
            break;
            }
        }
        }
        else// if (H >= 0xD8 && H <=0xF7)//查询中文在二级汉字区(56-87)
        $newStr .=self::$SecondTable[$H - 0xD8][$L-0xA1];
        ++$i;
    }
    return $newStr;
    }
}
echo zh2py::conv('妃');//F

php汉字转拼音问题 下

你使用的模版技术吧。 模版技术实际上是把页面中所有 {?$pinyin?} 转换 为 ?php $pinyin ?对吧? 也就是把{? 转换为 ?php 把?}转换为 ? 。 有可能是你的{? 或 ?}也页面中的function {}冲突。 比如 ...... return $restr; }? 你的模版页面我没看到~所以不确定是不是这个问题。你可以换个模版标识试试。 如果在其他页面中function可以使用,说明这个function没问题,你就在模版页下手就行了。