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