兩種php中文字元轉拼音問題解決方法

2021-06-20 13:03:48 字數 1143 閱讀 6327

最近在做二次開發的時候,碰到了將資料庫中儲存的某個欄位的值(該值為中文字串)分別歸類到相應字母下的問題,如:「部落格」歸類到b中。

解決該問題的思路為:      1、讀取改字段的值,擷取第乙個字元。

2、判斷擷取的第乙個字元是否為中文字元,若為中文字元,將其轉換成拼音。

3、擷取拼音的第乙個字元並大寫即可。

具體php書寫sql語句的實現**如下:

//取中文首字元的拼音首位大寫的sql語句

$sql_letra = "elt(interval(conv(hex(left(convert(tema.tema using gbk),1)),16,10),

0xb0a1,0xb0c5,0xb2c1,0xb4ee,0xb6ea,0xb7a2,0xb8c1,0xb9fe,0xbbf7,

0xbfa6,0xc0ac,0xc2e8,0xc4c3,0xc5b6,0xc5be,0xc6da,0xc8bb,0xc8f6,

0xcbfa,0xcdda,0xcef4,0xd1b9,0xd4d1),

'a','b','c','d','e','f','g','h','j','k','l','m','n','o','p',

'q','r','s','t','w','x','y','z')"; //擷取首字元並轉換成拼音的sql語句

$isen = 'tema.tema regexp "[\u0391-\uffe5]"'; //正則判斷字元是英文

$upletra = "if($isen,ucase(left(tema.tema,1)),$sql_letra)"; //判斷字元類別得到大寫首字母

return sql("select","$upletra as letra_orden,

if($upletra=$letra, 1,0) as letra

from $dbcfg[dbprefix]tema as tema

left join $dbcfg[dbprefix]tabla_rel as relaciones on relaciones.id_mayor=tema.tema_id

$leftjoin

$where

group by letra_orden

order by letra_orden");

php輸出中文字元

中文字元不可以使用imagettftext 函式在中直接輸出,如果要輸出中文字元,需要先使用iconv 函式對中文字元進行編碼,語法格式如下 string iconv string in charset,string out charset,string str 說明 引數 in charset是中...

python實現中文字元繁體和簡體中文轉換

需求 把中文字串進行繁體和簡體中文的轉換 思路 引入簡繁體處理庫,有興趣的同學可以研究一下內部實現,都是python寫的 zh wiki.py langconv.py 2 例項 coding utf 8 from langconv import 轉換繁體到簡體 line converter zh h...

PHP函式substr 擷取中文字元亂碼

substr 函式在擷取字串時是按位元組來擷取的,在gbk gb2312編碼下,乙個中文佔2個位元組 utf 8 unicode編碼下,乙個中文佔3個位元組。text 竹杖芒鞋輕勝馬,誰怕?一蓑煙雨任平生。echo text n 竹杖芒鞋輕勝馬,誰怕?一蓑煙雨任平生。echo strlen text...