1. 程式人生 > >PHP生僻漢字轉化為拼音

PHP生僻漢字轉化為拼音

<?php
/**
 * PHP 漢字轉拼音 [包含20902個基本漢字+5059生僻字]
 * @author 樓教主([email protected])
 * @version v1.2
 * @note 請開啟 mb_string 擴充套件
 */
/* 測試用例
$start_time = microtime(1);

var_dump(pinyin('對多音字無能為力'));
var_dump(pinyin('最全的PHP漢字轉拼音庫,比百度詞典還全(dict.baidu.com)'));
var_dump(pinyin('試試:㐀㐁㐄㐅㐆㐌㐖㐜'));
var_dump(pinyin('一起開始數:12345'));
var_dump(pinyin('海南'));
var_dump(pinyin('烏魯木齊'));
var_dump(pinyin('前總理朱鎔基'));
var_dump(pinyin('僅首字母', 'first'));
var_dump(pinyin('佔-位-符-為-空', 'all', ''));
var_dump(pinyin('不允許中文以外的字元', 'first', '', ''));

for ($i=0; $i<1e4; $i++) { // 效能次數,轉換1萬次
    pinyin('對多音字無能為力');
    pinyin('最全的PHP漢字轉拼音庫,比百度詞典還全(dict.baidu.com)');
    pinyin('試試:㐀㐁㐄㐅㐆㐌㐖㐜');
    pinyin('一起開始數:12345');
    pinyin('海南');
    pinyin('烏魯木齊');
    pinyin('前總理朱鎔基');
    pinyin('僅首字母', 'first');
    pinyin('佔-位-符-為-空', 'all', '');
    pinyin('不允許中文以外的字元', 'first', '', '');
}

echo number_format(microtime(1) - $start_time, 6);
*/


/**
 * 中文轉拼音 (utf8版,gbk轉utf8也可用)
 * @param string $str         utf8字串
 * @param string $ret_format  返回格式 [all:全拼音|first:首字母|one:僅第一字元首字母]
 * @param string $placeholder 無法識別的字元佔位符
 * @param string $allow_chars 允許的非中文字元
 * @return string             拼音字串
 */
function pinyin($str, $ret_format = 'all', $placeholder = '_', $allow_chars = '/[a-zA-Z\d ]/') {
    static $pinyins = null;

    if (null === $pinyins) {
        $data = 'yi:一,乁,乂,義,乙,亄,亦,億,仡,以,儀,伇,伊,伿,佁,佚,佾,侇,依,俋,倚,偯,儀,億,兿,冝,刈,劓,劮,勩,勩,匇,匜,醫,吚,囈,呭,呹,咦,咿,唈,噫,囈,圛,圯,坄,垼,埶,埸,墿,壱,壹,夁,夷,奕,妷,姨,媐,嫕,嫛,嬄,嬑,嬟,宐,宜,宧,寱,寲,屹,嶧,峓,崺,嶧,嶬,嶷,已,巸,帟,帠,幆,庡,廙,異,弈,弋,弌,弬,彛,彜,彝,彞,役,憶,忔,怈,怡,懌,恞,悒,悘,悥,意,憶,懌,懿,扅,扆,抑,挹,揖,撎,攺,敡,敼,斁,旑,旖,易,晹,暆,曀,曎,曵,杙,杝,枍,枻,柂,栘,栧,栺,桋,棭,椅,椬,椸,榏,槸,檍,檥,檹,欭,欹,歝,殔,殪,殹,毅,毉,沂,沶,泆,洢,浂,浥,浳,湙,溢,漪,潩,澺,瀷,炈,焲,熠,熤,熪,熼,燚,燡,燱,狋,猗,獈,玴,瑿,瓵,畩,異,疑,疫,痍,痬,瘞,瘞,瘱,癔,益,眙,瞖,矣,礒,禕,禕,秇,移,稦,穓,竩,笖,簃,籎,縊,繄,繶,繹,繹,縊,羛,羠,義,羿,翊,翌,翳,翼,耴,肄,肊,胰,膉,臆,艤,艗,艤,藝,芅,苅,苡,苢,荑,萓,萟,蓺,薏,藙,藝,蘙,虉,蟻,蛜,蛡,蛦,蜴,螔,螘,螠,蟻,衣,衤,衪,衵,袘,袣,裔,裛,褹,襼,觺,訲,訳,詍,詒,詣,誃,誼,謻,譩,譯,議,讉,讛,議,譯,詒,詣,誼,豙,豛,豷,貖,貤,貽,贀,貽,跇,跠,軼,輢,轙,軼,辷,迆,迤,迻,逘,逸,遺,遺,邑,郼,酏,醫,醳,醷,釔,釴,鈘,鈠,鉯,銥,鎰,鏔,鐿,釔,銥,鎰,鐿,阣,陭,隿,霬,靾,頉,頤,頥,顊,顗,頤,飴,饐,飴,駅,驛,驛,骮,鮧,鮨,鯣,鳦,鶂,鶃,鶍,鷁,鷊,鷖,鷧,鷾,鸃,鷊,鷁,鷖,黓,黟,黳,齮,齸,㑶,㑊,㑜,㑥,㓷,㔴,㕥,㖂,㘁,㘈,㘊,㘦,㙠,㙯,㚤,㚦,㛕,㜋,㜒,㝖,㞔,㠯,㡫,㡼,㢞,㣂,㣻,㥴,㦉,㦤,㦾,㩘,㫊,㰘,㰝,㰻,㱅,㱲,㲼,㳑,㴁,㴒,㵝,㵩,㶠,㹓,㹭,㺿,㽈,䄁,䄬,䄿,䆿,䇩,䇵,䉨,䋚,䋵,䋚,䎈,䐅,䐖,䓃,䓈,䓹,䔬,䕍,䖁,䖊,䗑,䗟,䗷,䘝,䘸,䝘,䝝,䝯,䞅,䢃,䣧,䦴,䧧,䩟,䬁,䬥,䬮,䭂,䭇,䭞,䭿,䮊,䯆,䰙,䱌,䱒,䲑,䴊,䴬|ding:丁,仃,叮,啶,奵,定,嵿,帄,忊,椗,玎,甼,疔,盯,矴,碇,碠,磸,耵,聢,聣,腚,萣,薡,訂,訂,酊,釘,錠,鐤,釘,錠,靪,頂,顁,頂,飣,飣,鼎,鼑,㝎,㫀,㴿,㼗|kao:丂,尻,拷,攷,栲,洘,烤,犒,考,銬,銬,靠,髛,鮳,鯌,鮳,䐧,䯪|qi:七,乞,亓,亝,企,倛,僛,其,悽,剘,啟,呇,呮,咠,唘,唭,啟,啔,啟,嘁,噐,器,圻,埼,夡,奇,契,妻,娸,婍,屺,豈,岐,岓,崎,嵜,帺,棄,忯,恓,悽,愒,愭,慼,慽,憇,憩,懠,戚,捿,掑,摖,斉,斊,旂,旗,晵,暣,朞,期,杞,柒,栔,棲,榿,桼,棄,棊,棋,棨,棲,榿,槭,檱,櫀,欫,欺,歧,氣,気,氣,汔,汽,沏,泣,淇,淒,渏,湆,湇,漆,濝,炁,猉,玂,玘,琦,琪,璂,甈,畦,疧,盀,盵,矵,砌,碁,碕,磧,碶,磎,磜,磧,磩,礘,祁,祇,祈,祺,禥,竒,簯,簱,籏,粸,紪,綥,綦,綨,綮,綺,緀,緕,纃,綺,缼,罊,耆,肵,臍,臍,艩,芑,芞,芪,薺,萁,萋,葺,蘄,薺,藄,蘄,蚑,蚔,蚚,蠐,蜝,蜞,螧,蟿,蠐,裿,褀,褄,訖,諆,諬,諿,訖,豈,起,跂,踑,踦,蹊,軝,迄,迉,邔,郪,釮,錡,鏚,錡,闙,霋,頎,頎,騎,騏,騹,騏,騎,鬐,鬾,鬿,魌,魕,鯕,鰭,鯕,鰭,鵸,鶀,鶈,麒,麡,齊,齊,㒅,㓞,㜎,㞓,㞚,㟓,㟚,㟢,㣬,㥓,㩩,㩽,㫓,㮑,㯦,㼤,㾨,䀈,䀙,䁈,䁉,䄎,䄢,䄫,䅤,䅲,䉝,䉻,䋯,䌌,䎢,䏅,䏌,䏠,䏿,䐡,䑴,䒗,䒻,䓅,䔇,䙄,䚉,䚍,䛴,䞚,䟄,䟚,䡋,䡔,