PHP获得中文汉字拼音首字母例子

WBOY
リリース: 2016-05-25 16:43:57
オリジナル
1456 人が閲覧しました

获取给出汉字中拼音的第一个汉字字母我们可以利用汉字的一个编码来进行判断,下面我们来给大家介绍一个例子,非常的简单好用。

先来看看怎样取得单个汉字的拼音首字母,请看下面这个函数,它支持GBK和UTF8编码:

<?php
function getfirstchar($s0) {
    $fchar = ord($s0{0});
    if ($fchar >= ord("A") and $fchar <= ord("z")) return strtoupper($s0{0});
    $s1 = iconv("UTF-8", "gb2312", $s0);
    $s2 = iconv("gb2312", "UTF-8", $s1);
    if ($s2 == $s0) {
        $s = $s1;
    } else {
        $s = $s0;
    }
    $asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
    if ($asc >= - 20319 and $asc <= - 20284) return "A";
    if ($asc >= - 20283 and $asc <= - 19776) return "B";
    if ($asc >= - 19775 and $asc <= - 19219) return "C";
    if ($asc >= - 19218 and $asc <= - 18711) return "D";
    if ($asc >= - 18710 and $asc <= - 18527) return "E";
    if ($asc >= - 18526 and $asc <= - 18240) return "F";
    if ($asc >= - 18239 and $asc <= - 17923) return "G";
    if ($asc >= - 17922 and $asc <= - 17418) return "H";
    if ($asc >= - 17417 and $asc <= - 16475) return "J";
    if ($asc >= - 16474 and $asc <= - 16213) return "K";
    if ($asc >= - 16212 and $asc <= - 15641) return "L";
    if ($asc >= - 15640 and $asc <= - 15166) return "M";
    if ($asc >= - 15165 and $asc <= - 14923) return "N";
    if ($asc >= - 14922 and $asc <= - 14915) return "O";
    if ($asc >= - 14914 and $asc <= - 14631) return "P";
    if ($asc >= - 14630 and $asc <= - 14150) return "Q";
    if ($asc >= - 14149 and $asc <= - 14091) return "R";
    if ($asc >= - 14090 and $asc <= - 13319) return "S";
    if ($asc >= - 13318 and $asc <= - 12839) return "T";
    if ($asc >= - 12838 and $asc <= - 12557) return "W";
    if ($asc >= - 12556 and $asc <= - 11848) return "X";
    if ($asc >= - 11847 and $asc <= - 11056) return "Y";
    if ($asc >= - 11055 and $asc <= - 10247) return "Z";
    return null;
}
?>
ログイン後にコピー

以上函数返回单个汉字的拼音首字母。

当需要处理中文字符串时,只需要重新写一个函数,用来取得一串汉字的拼音首字母。

<?php
function pinyin1($zh) {
    $ret = "";
    $s1 = iconv("UTF-8", "gb2312", $zh);
    $s2 = iconv("gb2312", "UTF-8", $s1);
    if ($s2 == $zh) {
        $zh = $s1;
    }
    for ($i = 0; $i < strlen($zh); $i++) {
        $s1 = substr($zh, $i, 1);
        $p = ord($s1);
        if ($p > 160) {
            $s2 = substr($zh, $i++, 2);
            $ret.= getfirstchar($s2);
        } else {
            $ret.= $s1;
        }
    }
    return $ret;
}
?>
ログイン後にコピー

上面这个函数就是获取汉字拼音首字母的函数,使用示例:

echo pinyin1('这是中文字符串');

结果输出:ZSZWZFC

补充在 getfirstchar函数中我们有两种写法

第一种是我们上面用到的例子

<?php
function getfirstchar($s0) {
    $fchar = ord($s0{0});
    if ($fchar >= ord("A") and $fchar <= ord("z")) return strtoupper($s0{0});
?>
//而另一种是我们使用的数字方法了,也比较简单了。
<?php
    function getFirstChar($string) {
        $firstCharOrd = ord(strtoupper($string{0}));
        if (($firstCharOrd >= 65 && $firstCharOrd <= 91) || ($firstCharOrd >= 48 && $firstCharOrd <= 57)) return strtoupper($string{0});
}
?>
ログイン後にコピー


永久链接:

转载随意!带上文章地址吧。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート