免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
PHP漢字轉拼音函數(shù)類示例
在PHP中如何將中文漢字轉換成對應的拼音或者首字母等功能呢,現(xiàn)在我們就來講解一下PHP所提供的漢字轉拼音類。


    首先要實現(xiàn)這功能需要包含一個ChinesePinyin.class.php類

代碼:

<?php
/**
*
* 漢字轉拼音類
* @Author : Kin
* @Date   : 2014-03-16
* @Email  : Mr.kin@foxmail.com
*
*/
namespace Org\Util;
define('PINYIN_ROOT'dirname(__FILE__));
class ChinesePinyin{
 
    //utf-8中國漢字集合
    private $ChineseCharacters;
    //編碼
    private $charset = 'utf-8';
 
    public function __construct(){
        if( empty($this->ChineseCharacters) ){
          $this->ChineseCharacters = file_get_contents(PINYIN_ROOT.'/Pinyin/ChineseCharacters.dat');
        }
    }
 
    /*
    * 轉成帶有聲調(diào)的漢語拼音
    * param $input_char String  需要轉換的漢字
    * param $delimiter  String   轉換之后拼音之間分隔符
    * param $outside_ignore  Boolean     是否忽略非漢字內(nèi)容
    */
    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;
    }
 
    /*
    * 轉成帶無聲調(diào)的漢語拼音
    * param $input_char String  需要轉換的漢字
    * param $delimiter  String   轉換之后拼音之間分隔符
    * param $outside_ignore  Boolean     是否忽略非漢字內(nèi)容
    */
    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 TransformUcwordsOnlyChar($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;
 
 
    }
 
 
    /*
    * 轉成漢語拼音首字母,包含非漢字內(nèi)容
    * param $input_char String  需要轉換的漢字
    * param $delimiter  String   轉換之后拼音之間分隔符
    */
    public function TransformUcwords($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.= $delimiter.$word.$delimiter;
            }
        }
        $output_char  =  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')
                                           ,$output_char );
 
        $array = explode($delimiter,$output_char);
        $array = array_filter($array);
        $res = '';
        foreach($array as $list){
            $res .= substr($list,0,1);
        }
        return $res;
    }
 
 
 
 
}



我們來看一下如何調(diào)用這個類,并且操作這個類


以下是index.php文件

代碼:

<?php
include 'ChinesePinyin.class.php';
$Pinyin = new \Org\Util\ChinesePinyin();
header("Content-Type:text/html;charset=utf-8");
$str = $_POST['str'];
if(strlen($str)<=0){
    echo '請輸入要轉換的內(nèi)容';
    exit;
}
$pinyin1 = $Pinyin->TransformWithTone($str);
$pinyin2 = $Pinyin->TransformWithoutTone($str);
$pinyin3 = $Pinyin->TransformUcwordsOnlyChar($str);
$pinyin4 = $Pinyin->TransformUcwords($str);
echo '帶聲調(diào)的漢語拼音: <span class="red">'.$pinyin1.'</span>';
echo '<br>';
echo '無聲調(diào)的漢語拼音: <span class="red">'.$pinyin2.'</span>';
echo '<br>';
echo '首字母只包括漢字: <span class="red">'.$pinyin3.'</span>';
echo '<br>';
echo '首字母和其他字符: <span class="red">'.$pinyin4.'</span>';
echo '<br>';
 
?>


把這兩個文件放同一目錄下,然后通過include函數(shù)包含,再通過實例化就能調(diào)用里面相應的方法了。


至于每個方法的功能ChinesePinyin.class.php類里面都有注釋,自己可以認真看一下,我們也可以通過示例來看一下效果

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MySQL拼音首字母查詢
pinyin4j簡介
漢字轉拼音
PHP substr 漢字 亂碼 自構函數(shù)
給你個判斷是否為漢字的函數(shù)吧
獲取中文的拼音字母
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服