PHP漢字轉拼音類(UTF-8) 支援轉換後帶有聲調和無聲調以及只擷取漢字首字母____PHP

來源:互聯網
上載者:User

PHP漢字轉拼音類(UTF-8)

demo:

示範文字:中華人民共和國

可以實現以下三種 任一種轉換

①轉成帶有聲調的漢語拼音

zhōng huá rén mín gòng hé guó

②轉成無聲調的漢語拼音

zhong hua ren min gong he guo

③轉成漢語拼音首字母

ZHRMGHG

如果有問題 可以留言。

 

 

執行個體:

 


注意:以下類 需要 ChineseCharacters.dat 檔案。

完整包帶有demo 打包 可前往這裡下載: http://download.csdn.net/detail/kin1987/7064125

 

 

<?php/**** 漢字轉拼音類* @Author : Kin* @Date : 2014-03-16**/class ChinesePinyin{//utf-8中國漢字集合private $ChineseCharacters;//編碼private $charset = 'utf-8';public function __construct(){if( empty($this->ChineseCharacters) ){  $this->ChineseCharacters = file_get_contents('ChineseCharacters.dat');}}/** 轉成帶有聲調的漢語拼音* param $input_char String  需要轉換的漢字* param $delimiter  String   轉換之後拼音之間分隔字元* param $outside_ignore  Boolean     是否忽略非漢字內容*/public function TransformWithTone($input_char,$delimiter=' ',$outside_ignore=false){$input_len = mb_strlen($input_char,$this->charset);$output_char = '';for($i=0;$i<$input_len;$i++){$word = mb_substr($input_char,$i,1,$this->charset);if(preg_match('/^[\x{4e00}-\x{9fa5}]$/u',$word) && preg_match('/\,'.preg_quote($word).'(.*?)\,/',$this->ChineseCharacters,$matches) ){$output_char.=$matches[1].$delimiter;}else if(!$outside_ignore){$output_char.=$word;}}return $output_char;}/** 轉成帶無聲調的漢語拼音* param $input_char String  需要轉換的漢字* param $delimiter  String   轉換之後拼音之間分隔字元* param $outside_ignore  Boolean     是否忽略非漢字內容*/public function TransformWithoutTone($input_char,$delimiter='',$outside_ignore=true){$char_with_tone = $this->TransformWithTone($input_char,$delimiter,$outside_ignore);$char_without_tone  =  str_replace(array('ā','á','ǎ','à','ō','ó','ǒ','ò','ē','é','ě','è','ī','í','ǐ','ì','ū','ú','ǔ','ù','ǖ','ǘ','ǚ','ǜ','ü'),   array('a','a','a','a','o','o','o','o','e','e','e','e','i','i','i','i','u','u','u','u','v','v','v','v','v')   ,$char_with_tone );return $char_without_tone;}/** 轉成漢語拼音首字母* param $input_char String  需要轉換的漢字* param $delimiter  String   轉換之後拼音之間分隔字元*/public function TransformUcwords($input_char,$delimiter=''){$char_without_tone = ucwords($this->TransformWithoutTone($input_char,' ',true));$ucwords = preg_replace('/[^A-Z]/','',$char_without_tone);if(!empty($delimiter)){$ucwords = implode($delimiter,str_split($ucwords));}return $ucwords;}}


注意:以上類 需要 ChineseCharacters.dat 檔案。

完整包帶有demo 打包 可前往這裡下載: http://download.csdn.net/detail/kin1987/7064125

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.