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+dbfile开发小型留言本
Oct 09 PHP
在PHP中使用与Perl兼容的正则表达式
Nov 26 PHP
php 图像函数大举例(非原创)
Jun 20 PHP
PHP下打开URL地址的几种方法小结
May 16 PHP
PHP操作文件的一些基本函数使用示例
Nov 18 PHP
php生成二维码时出现中文乱码的解决方法
Dec 18 PHP
PHP解密Unicode及Escape加密字符串
May 17 PHP
PHP 年月日的三级联动实例代码
May 24 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
php实现的三个常用加密解密功能函数示例
Nov 06 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 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去除字符串换行符示例分享
2014/02/13 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
JavaScript 特殊字符
2007/04/05 Javascript
ECMAScript 基础知识
2007/06/29 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
angular基于ng-alain定义自己的select组件示例
2018/02/23 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
微信小程序如何播放腾讯视频的实现
2019/09/20 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
从零学Python之入门(五)缩进和选择
2014/05/27 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
django基础学习之send_mail功能
2019/08/07 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
秘书英文求职信
2014/04/16 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
亮剑精神演讲稿
2014/05/23 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
个人更名证明
2015/06/23 职场文书
Python使用psutil库对系统数据进行采集监控的方法
2021/08/23 Python
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript