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 相关文章推荐
CURL状态码列表(详细)
Jun 27 PHP
一个简洁实用的PHP缓存类完整实例
Jul 26 PHP
PHP函数http_build_query使用详解
Aug 20 PHP
基于递归实现的php树形菜单代码
Nov 19 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
Jan 03 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
php微信开发之上传临时素材
Jun 24 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
php中分页及SqlHelper类用法实例
Jan 12 PHP
php 静态属性和静态方法区别详解
Apr 09 PHP
使用PHP+MySql实现微信投票功能实例代码
Sep 29 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
php Undefined index和Undefined variable的解决方法
2008/03/27 PHP
PHP SQLite类
2009/05/07 PHP
php图片上传存储源码并且可以预览
2011/08/26 PHP
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
JavaScript方法和技巧大全
2006/12/27 Javascript
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
js option删除代码集合
2008/11/12 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
2017/01/09 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
Vue下滚动到页面底部无限加载数据的示例代码
2018/04/22 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
javascript实现拼图游戏
2021/01/29 Javascript
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
PyTorch中Tensor的数据统计示例
2020/02/17 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
匡威西班牙官网:Converse西班牙
2019/10/01 全球购物
销售人员获奖感言
2014/02/05 职场文书
中班开学寄语
2014/04/04 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
交通事故代理词范文
2015/05/23 职场文书
教师师德工作总结2015
2015/07/22 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
反邪教学习心得体会
2016/01/15 职场文书
JDK8中String的intern()方法实例详细解读
2022/09/23 Java/Android