日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php gbk 拼音,php 基于gbk和 Ascii把汉字转换为拼音

發布時間:2023/12/14 php 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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把汉字转换为拼音的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。