php gbk 拼音,php 基于gbk和 Ascii把汉字转换为拼音
在php開發中有把漢字轉換為拼音的需求
這里主要說明Ascii和gbk 格式的漢字轉為拼音的內容,如果你是utf-8的,那就通過iconv()函數轉utf-8為gbk,在進行拼音轉換//Ascii轉拼音
function?asc_to_pinyin($asc,$pyarr){
if($asc<128){
return?chr($asc);
}elseif(isset($pyarr[$asc])){
return?$pyarr[$asc];
}else{
foreach($pyarr?as?$id=>$p){
if($id>=$asc){
return?$p;
}
}
}
}
//gbk轉拼音
function?gbk_to_pinyin($txt){
$l?=?strlen($txt);??//返回字符串長度strlen("證人")以字節為單位,gbk編碼下,一個漢字2個字節,所有“證人”長度為4。區別于mb_strlen()已個數為單位返回長度,mb_strlen(“證人”);返回長度2
$i?=?0;
$pyarr?=?array();
$py?=?array();
$filename?=?'gb-pinyin.table';??//拼音表文件,這里路徑根據文件位置自行設置
$fp?=?fopen($filename,'r');
while(!feof($fp)){
$p?=?explode("-",fgets($fp,32));?//fgets()經常和while循環配合使用,因為fgets()讀取內容是以行為單位的。讀完一行就立馬返回(前提是這一行沒有到達文件末尾,并且是在設定的長度范圍內)。所以要在循環中一行一行讀取。從?handle?指向的文件中讀取一行并返回長度最多為?length?-?1?字節的字符串。碰到換行符(包括在返回值中)、EOF?或者已經讀取了?length?-?1?字節后停止(看先碰到那一種情況)。如果沒有指定?length,則默認為?1K,或者說?1024?字節。
$pyarr[intval($p[1])]?=?trim($p[0]);
}
fclose($fp);
ksort($pyarr);
while($i
$tmp?=?ord($txt[$i]);
if($tmp>=128){
$asc?=?abs($tmp*256+ord($txt[$i+1])-65536);
$i?=?$i+1;
}else{
$asc?=?$tmp;
}
$py[]?=?asc_to_pinyin($asc,$pyarr);
$i++;
}
return?$py;
}
$py?=?gbk_to_pinyin('證人');
print_r($py);
結果:Array
(
[0]?=>?zheng
[1]?=>?ren
)
下載拼音庫文件,下載之后自己保存為gb-pinyin.table
總結
以上是生活随笔為你收集整理的php gbk 拼音,php 基于gbk和 Ascii把汉字转换为拼音的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何发表一篇核心期刊论文
- 下一篇: 解决出行难题,共享巴士小程序开发