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 仿Comsenz安装效果代码打包提供下载
May 09 PHP
php的一些小问题
Jul 03 PHP
给初学者的30条PHP最佳实践(荒野无灯)
Aug 02 PHP
PHP分页效率终结版(推荐)
Jul 01 PHP
php编写简单的文章发布程序
Jun 18 PHP
PHP实现可自定义样式的分页类
Mar 29 PHP
PHP中Notice错误常见解决方法
Apr 28 PHP
Windows下php+mysql5.7配置教程
May 16 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
Apr 02 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新手上路(二)
2006/10/09 PHP
PHP详细彻底学习Smarty
2008/03/27 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
jQuery+ajax读取json数据并按照价格排序示例
2018/03/28 jQuery
js实现录音上传功能
2019/11/22 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python字典多条件排序方法实例
2014/06/30 Python
Python环境下搭建属于自己的pip源的教程
2016/05/05 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
学生手册家长评语
2014/02/10 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
美术教师个人工作总结
2015/02/06 职场文书
抢劫罪辩护词
2015/05/21 职场文书
行政复议决定书
2015/06/24 职场文书
暑期工社会实践报告
2015/07/13 职场文书
公司客户答谢酒会祝酒词
2015/08/11 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server
解决xampp安装后Apache无法启动
2022/03/21 Servers
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android