ZOL博客
登录  |   注册  |   帮助
我的博客 日志 好友 相册
论坛
视频装备圈子 网摘 留言
ZOL博客 > 飞客的博客 > 关于php取得中文首字母的解决办法讨论
日志分类

关于php取得中文首字母的解决办法讨论


2008-04-02 13:37:49    分类:技术 | 业界 |  评论(1) |  浏览(373)

最近几天几个项目都要做按字母索引,查询相关的记录,如游戏,软件等项目,所以着重看了一下如何取得中文首字母,网上找了两个程序,大都是通过ascii码来取得对应的拼音或直接取首字母,然后通过此来取得中文名称的首字母,对表加个字段。。。

下面是程序的代码,可以参考(php语言),这个程序还不全面,不能完全拿过来用,问题出现在两个,有的中文字取不到,只适合于常用的中文字,还有就是取得后的后期加工和处理,等项目开始的时候再讨论了,大家也帮我想想有没有其它的办法。谢谢了!

<?   
function pykey( $py_key)   
{   
    $pinyin = 65536 + pys($py_key);   
    if ( 45217 <= $pinyin && $pinyin <= 45252 )   
    {   
        $zimu = "A";   
        return $zimu;   
    }   
    if ( 45253 <= $pinyin && $pinyin <= 45760 )   
    {   
        $zimu = "B";   
        return $zimu;   
    }   
    if ( 45761 <= $pinyin && $pinyin <= 46317 )   
    {   
        $zimu = "C";   
        return $zimu;   
    }   
    if ( 46318 <= $pinyin && $pinyin <= 46825 )   
    {   
        $zimu = "D";   
        return $zimu;   
    }   
    if ( 46826 <= $pinyin && $pinyin <= 47009 )   
    {   
        $zimu = "E";   
        return $zimu;   
    }   
    if ( 47010 <= $pinyin && $pinyin <= 47296 )   
    {   
        $zimu = "F";   
        return $zimu;   
    }   
    if ( 47297 <= $pinyin && $pinyin <= 47613 )   
    {   
        $zimu = "G";   
        return $zimu;   
    }   
    if ( 47614 <= $pinyin && $pinyin <= 48118 )   
    {   
        $zimu = "H";   
        return $zimu;   
    }   
    if ( 48119 <= $pinyin && $pinyin <= 49061 )   
    {   
        $zimu = "J";   
        return $zimu;   
    }   
    if ( 49062 <= $pinyin && $pinyin <= 49323 )   
    {   
        $zimu = "K";   
        return $zimu;   
    }   
    if ( 49324 <= $pinyin && $pinyin <= 49895 )   
    {   
        $zimu = "L";   
        return $zimu;   
    }   
    if ( 49896 <= $pinyin && $pinyin <= 50370 )   
    {   
        $zimu = "M";   
        return $zimu;   
    }   
    if ( 50371 <= $pinyin && $pinyin <= 50613 )   
    {   
        $zimu = "N";   
        return $zimu;   
    }   
    if ( 50614 <= $pinyin && $pinyin <= 50621 )   
    {   
        $zimu = "O";   
        return $zimu;   
    }   
    if ( 50622 <= $pinyin && $pinyin <= 50905 )   
    {   
        $zimu = "P";   
        return $zimu;   
    }   
    if ( 50906 <= $pinyin && $pinyin <= 51386 )   
    {   
        $zimu = "Q";   
        return $zimu;   
    }   
    if ( 51387 <= $pinyin && $pinyin <= 51445 )   
    {   
        $zimu = "R";   
        return $zimu;   
    }   
    if ( 51446 <= $pinyin && $pinyin <= 52217 )   
    {   
        $zimu = "S";   
        return $zimu;   
    }   
    if ( 52218 <= $pinyin && $pinyin <= 52697 )   
    {   
        $zimu = "T";   
        return $zimu;   
    }   
    if ( 52698 <= $pinyin && $pinyin <= 52979 )   
    {   
        $zimu = "W";   
        return $zimu;   
    }   
    if ( 52980 <= $pinyin && $pinyin <= 53640 )   
    {   
        $zimu = "X";   
        return $zimu;   
    }   
    if ( 53689 <= $pinyin && $pinyin <= 54480 )   
    {   
        $zimu = "Y";   
        return $zimu;   
    }   
    if ( 54481 <= $pinyin && $pinyin <= 62289 )   
    {   
        $zimu = "Z";   
        return $zimu;   
    }   
    $zimu = $py_key;   
    return $zimu;   
}   
function pys( $pysa )   
{   
    $pyi = "";   
    $i= 0;   
    for ( ; $i < strlen( $pysa ); $i++)   
    {   
        $_obfuscate_8w= ord( substr( $pysa,$i,1) );   
        if ( 160 < $_obfuscate_8w)   
        {   
            $_obfuscate_Bw = ord( substr( $pysa, $i++, 1 ) );   
            $_obfuscate_8w = $_obfuscate_8w * 256 + $_obfuscate_Bw - 65536;   
        }   
        $pyi.= $_obfuscate_8w;   
    }   
    return $pyi;   
}   
$letter = pykey($_POST['hz']);   
echo $letter;
?>  

<form method=post action=get_first_word.php>
请在此处输入中文:<input name=hz>
<INPUT TYPE="submit">
</form>

 投稿:业界
|  
已分享到圈子:
  技术开发
谁顶了这篇日志>>  还有谁对该日志投票?
0
好文,顶
0
烂文,踩
 
我要发表评论网友评论:阅读<< 关于php取得中文首字母的解决办法讨论 >>

发表评论:查看评论| 返回顶部
 
用户名  密码  快速注册
匿名评论
内 容:
插入表情
   *Ctrl+Enter快速回复

针对ZOL博客您有任何使用问题和建议 您可以 联系博客管理员查看帮助
ZOL简介 | 用户注册 | 广告服务 | 人员招聘(月) | ZOL历程 | 互动营销中心 | 站点地图 | 联系方式 | 欢迎投稿 | RSS订阅 | 友情链接
Copyright ©1999 - ZOL. All rights reserved. 中关村在线 版权所有.