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 Hash函数,增强密码安全
Feb 25 PHP
php实现utf-8和GB2312编码相互转换函数代码
Feb 07 PHP
PHP面向对象详解(三)
Dec 07 PHP
PHP批量获取网页中所有固定种子链接的方法
Nov 18 PHP
PHP简单实现二维数组赋值与遍历功能示例
Oct 19 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
PHP实现的用户注册表单验证功能简单示例
Feb 25 PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 PHP
php变量与字符串的增删改查操作示例
May 07 PHP
详解PHP设计模式之依赖注入模式
May 25 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 验证码实例代码
2010/06/01 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
PHP输出日历表代码实例
2015/03/27 PHP
PHP页面转UTF-8中文编码乱码的解决办法
2015/10/20 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
PHP5中使用mysqli的prepare操作数据库的介绍
2019/03/18 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
angularjs中的单元测试实例
2014/12/06 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
JavaScript中数组Array.sort()排序方法详解
2017/03/01 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
2017/11/16 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
2020/03/10 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
[01:34]完美“圣”典宣传片震撼发布,12.17与你不见不散
2016/12/16 DOTA
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
深入理解python多进程编程
2016/06/12 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
python求最大值最小值方法总结
2019/06/25 Python
Python适配器模式代码实现解析
2019/08/02 Python
python无序链表删除重复项的方法
2020/01/17 Python
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
Ted Baker美国官网:英国时尚品牌
2018/10/29 全球购物
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
党的群众路线教育实践活动总结报告
2014/07/03 职场文书
小学生学习保证书
2015/02/26 职场文书
2015年社区文体活动总结
2015/03/25 职场文书