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也可以?成Shell Script
Oct 09 PHP
php面向对象全攻略 (十五) 多态的应用
Sep 30 PHP
在php中判断一个请求是ajax请求还是普通请求的方法
Jun 28 PHP
jquery获取多个checkbox的值异步提交给php的方法
Jun 24 PHP
PHP导入导出Excel代码
Jul 07 PHP
PHP实现事件机制的方法
Jul 10 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
Aug 12 PHP
php自定义时间转换函数示例
Dec 07 PHP
php出租房数据管理及搜索页面
May 23 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
Dec 18 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 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
zend framework重定向方法小结
2016/05/28 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
基于jquery的表头固定的若干方法
2011/01/27 Javascript
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
uniapp 仿微信的右边下拉选择弹出框的实现代码
2020/07/12 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
Python 常用string函数详解
2016/05/30 Python
基于python中的TCP及UDP(详解)
2017/11/06 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
python制作抖音代码舞
2019/04/07 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
Python持续监听文件变化代码实例
2020/07/22 Python
Python中的面向接口编程示例详解
2021/01/17 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
工作表扬信的范文
2014/01/10 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
优秀毕业生推荐信范文
2014/03/07 职场文书
质量负责人任命书
2014/06/06 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python