php汉字转拼音的示例


Posted in PHP onFebruary 27, 2014
<?php
class Helper_Spell{
    public $spellArray = array();    static public function getArray() {
        return unserialize(file_get_contents('pytable_without_tune.txt'));
    }
    /**
     * @desc 获取字符串的首字母
     * @param $string 要转换的字符串
     * @param $isOne 是否取首字母
     * @param $upper 是否转换为大写
     * @return string
     * 
     * 例如:getChineseFirstChar('我是作者') 首字符全部字母+小写
     * return "wo"
     * 
     * 例如:getChineseFirstChar('我是作者',true) 首字符首字母+小写
     * return "w"
     * 
     * 例如:getChineseFirstChar('我是作者',true,true) 首字符首字母+大写
     * return "W"
     * 
     * 例如:getChineseFirstChar('我是作者',false,true) 首字符全部字母+大写
     * return "WO"
     */
    static public function getChineseFirstChar($string,$isOne=false,$upper=false) {
        $spellArray = self::getArray();
        $str_arr = self::utf8_str_split($string,1); //将字符串拆分成数组
        if(preg_match('/^[\x{4e00}-\x{9fa5}]+$/u',$str_arr[0])) { //判断是否是汉字
            $chinese = $spellArray[$str_arr[0]];
            $result = $chinese[0];
        }else {
            $result = $str_arr[0];
        }
        $result = $isOne ? substr($result,0,1) : $result; 
        return $upper?strtoupper($result):$result;
    }
    /**
     * @desc 将字符串转换成拼音字符串
     * @param $string 汉字字符串
     * @param $upper 是否大写
     * @return string
     * 
     * 例如:getChineseChar('我是作者'); 全部字符串+小写
     * return "wo shi zuo zhe"
     * 
     * 例如:getChineseChar('我是作者',true); 首字母+小写
     * return "w s z z"
     * 
     * 例如:getChineseChar('我是作者',true,true); 首字母+大写
     * return "W S Z Z"
     * 
     * 例如:getChineseChar('我是作者',false,true); 首字母+大写
     * return "WO SHI ZUO ZHE"
     */
    static public function getChineseChar($string,$isOne=false,$upper=false) {
        global $spellArray;
        $str_arr = self::utf8_str_split($string,1); //将字符串拆分成数组
        $result = array();
        foreach($str_arr as $char)
        {
            if(preg_match('/^[\x{4e00}-\x{9fa5}]+$/u',$char))
            {
                $chinese = $spellArray[$char];
                $chinese  = $chinese[0];
            }else{
                $chinese=$char;
            }
            $chinese = $isOne ? substr($chinese,0,1) : $chinese;
            $result[] = $upper ? strtoupper($chinese) : $chinese;
        }
        return implode(' ',$result);
    }
    /**
     * @desc 将字符串转换成数组
     * @param $str 要转换的数组
     * @param $split_len
     * @return array
     */
    private function utf8_str_split($str,$split_len=1) {

        if(!preg_match('/^[0-9]+$/', $split_len) || $split_len < 1) {
            return FALSE;
        }
        $len = mb_strlen($str, 'UTF-8');
        if ($len <= $split_len) {
            return array($str);
        }
        preg_match_all('/.{'.$split_len.'}|[^\x00]{1,'.$split_len.'}$/us', $str, $ar);
        return $ar[0];
    }
}
PHP 相关文章推荐
php Mysql日期和时间函数集合
Nov 16 PHP
PHP 飞信好友免费短信API接口开源版
Jul 22 PHP
Linux编译升级php的详细方法
Nov 04 PHP
php Calender(日历)代码分享
Jan 03 PHP
PHP类中的魔术方法(Magic Method)简明总结
Jul 08 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
May 12 PHP
php 访问oracle 存储过程实例详解
Jan 08 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
Feb 15 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
PHP将英文数字转换为阿拉伯数字实例讲解
Jan 28 PHP
PHP getNamespaces()函数讲解
Feb 03 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 PHP
PHP中session变量的销毁
Feb 27 #PHP
php处理restful请求的路由类分享
Feb 27 #PHP
php中session退出登陆问题
Feb 27 #PHP
php的ajax简单实例
Feb 27 #PHP
php中require和require_once的区别说明
Feb 27 #PHP
php更新修改excel中的内容实例代码
Feb 26 #PHP
php获取文件大小的方法
Feb 26 #PHP
You might like
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
定义php常量的详解
2013/06/09 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
js nextSibling属性和previousSibling属性概述及使用注意
2013/02/16 Javascript
JS关键字球状旋转效果的实例代码
2013/11/29 Javascript
js 阻止子元素响应父元素的onmouseout事件具体实现
2013/12/23 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
js简单设置与使用cookie的方法
2016/01/22 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
Javascript循环删除数组中元素的几种方法示例
2017/05/18 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
为Python的web框架编写前端模版的教程
2015/04/30 Python
Python中index()和seek()的用法(详解)
2017/04/27 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
详谈python中冒号与逗号的区别
2018/04/18 Python
python脚本实现验证码识别
2018/06/07 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
二年级数学教学反思
2014/01/21 职场文书
超市客服工作职责
2014/06/11 职场文书
教师节横幅标语
2014/10/08 职场文书
写给医院的感谢信
2015/01/22 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
详解Vue的列表渲染
2021/11/20 Vue.js
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript
nginx之queue的具体使用
2022/06/28 Servers