php 如何擷取字串拼音首字母

來源:互聯網
上載者:User
例如:$str = '中華人民';

返回來 ZHRM;

下面是我百度的一個函數,但是有的情況會出錯,例如: 重慶

返回來的是 ZQ

function getfirstchar($s0) {        $firstchar_ord = ord(strtoupper($s0{0}));        if (($firstchar_ord >= 65 and $firstchar_ord <= 91)or ( $firstchar_ord >= 48 and $firstchar_ord <= 57))            return $s0{0};        $s = iconv("UTF-8", "gb2312", $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;    }

回複內容:

例如:$str = '中華人民';

返回來 ZHRM;

下面是我百度的一個函數,但是有的情況會出錯,例如: 重慶

返回來的是 ZQ

function getfirstchar($s0) {        $firstchar_ord = ord(strtoupper($s0{0}));        if (($firstchar_ord >= 65 and $firstchar_ord <= 91)or ( $firstchar_ord >= 48 and $firstchar_ord <= 57))            return $s0{0};        $s = iconv("UTF-8", "gb2312", $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;    }

可以嘗試使用這個拼音庫:

http://overtrue.me/pinyin/
http://overtrue.me/articles/2014/10/php-chinese-to-pinyin.html

可以使用 http://overtrue.me/pinyin/,開源項目

多音字沒辦法解決,除非你自己寫枚舉排除

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.