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 09 PHP
浅析PHP中的UNICODE 编码与解码
Jun 29 PHP
php实现图片缩放功能类
Dec 18 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
Mar 08 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 PHP
PHP连接和操作MySQL数据库基础教程
Sep 29 PHP
浅谈php优化需要注意的地方
Nov 27 PHP
PHP文件缓存smarty模板应用实例分析
Feb 26 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
Mar 25 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
Laravle eloquent 多对多模型关联实例详解
Nov 22 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 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
用session做客户验证时的注意事项
2006/10/09 PHP
php mysql索引问题
2008/06/07 PHP
PHP 函数执行效率的小比较
2010/10/17 PHP
php读取文件内容的几种方法详解
2013/06/26 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
php+xml编程之SimpleXML的应用实例
2015/01/24 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
使用jquery为table动态添加行的实现代码
2011/03/30 Javascript
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
2014/05/08 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
2015/09/19 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
浅谈JavaScript对象与继承
2016/07/10 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
总结js函数相关知识点
2018/02/27 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
Python中文竖排显示的方法
2015/07/28 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
Python Flask-web表单使用详解
2017/11/18 Python
python中threading开启关闭线程操作
2020/05/02 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
德国网上花店:Valentins
2018/08/15 全球购物
自荐信的禁忌和要点
2013/10/15 职场文书
社区母亲节活动记录
2014/03/06 职场文书
家长对孩子的感言
2014/03/10 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
公司优秀员工获奖感言
2014/08/14 职场文书
Golang 1.18 多模块Multi-Module工作区模式的新特性
2022/04/11 Golang