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 变量类型的强制转换
Oct 23 PHP
php printf输出格式使用说明
Dec 05 PHP
探讨php中防止SQL注入最好的方法是什么
Jun 10 PHP
强制PHP命令行脚本单进程运行的方法
Apr 15 PHP
50个PHP程序性能优化的方法
Jun 02 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
php使用指定编码导出mysql数据到csv文件的方法
Mar 31 PHP
php实现粘贴截图并完成上传功能
May 17 PHP
php读取csc文件并输出
May 21 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
PHP中关键字interface和implements详解
Jun 14 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 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
实例(Smarty+FCKeditor新闻系统)
2007/01/02 PHP
php 动态执行带有参数的类方法
2009/04/10 PHP
PHP静态调用非静态方法的应用分析
2013/05/02 PHP
ThinkPHP安装和设置
2015/07/27 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
javascript格式化日期时间方法汇总
2015/06/19 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
Vue.js实现多条件筛选、搜索、排序及分页的表格功能
2020/11/24 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
vue数据传递--我有特殊的实现技巧
2018/03/20 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
Node.js+Express+Mysql 实现增删改查
2019/04/03 Javascript
python实现图书馆研习室自动预约功能
2018/04/27 Python
Python 实现训练集、测试集随机划分
2020/01/08 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
贝佳斯官方网站:Borghese
2020/05/08 全球购物
职工运动会感言
2014/02/07 职场文书
高等教育专业自荐信范文
2014/03/26 职场文书
2014年国庆节演讲稿
2014/09/19 职场文书
公诉意见书范文
2015/06/05 职场文书
2015中学教学工作总结
2015/07/22 职场文书
创业计划书之校园超市
2019/09/12 职场文书
Python利用zhdate模块实现农历日期处理
2022/03/31 Python
Linux中各个目录的作用与内容
2022/06/28 Servers