您的位置:首页 > 编程语言 > PHP开发

两种php中文字符转拼音问题解决方法

2014-02-18 17:05 501 查看
  最近在做二次开发的时候,碰到了将数据库中存储的某个字段的值(该值为中文字符串)分别归类到相应字母下的问题,如:“博客”归类到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");


   以上是通过sql语句获取中文字符串的大写首字母,我在查阅资料的过程中还找到了php实现将中文字符串全部转成拼音的函数,已测试完全可用,在博另一篇博文中已有,访问链接:http://blog.csdn.net/amino77/article/details/19198449
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php sql