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 相关文章推荐
实用函数10
Nov 08 PHP
PHP连接access数据库
Mar 27 PHP
PHP把数字转成人民币大写的函数分享
Jun 30 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
PHP7标量类型declare用法实例分析
Sep 26 PHP
LAMP环境使用Composer安装Laravel的方法
Mar 25 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
PHP基于面向对象封装的分页类示例
Mar 15 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 PHP
laravel框架实现敏感词汇过滤功能示例
Feb 15 PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 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
WordPress后台中实现图片上传功能的实例讲解
2016/01/11 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
Zend Framework创建自己的动作助手详解
2016/03/05 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
js修改table中Td的值(定义td的单击事件)
2013/01/10 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
vue中v-model动态生成的实例详解
2017/10/27 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
vue项目中运用webpack动态配置打包多种环境域名的方法
2019/06/24 Javascript
python获取本机外网ip的方法
2015/04/15 Python
Python如何读取MySQL数据库表数据
2017/03/11 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
武汉英思工程科技有限公司&ndash;ORACLE面试测试题目
2012/04/30 面试题
市场营销专业个人求职信范文
2013/12/14 职场文书
《桂林山水》教学反思
2014/02/08 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
表扬稿格式范文
2015/01/16 职场文书
小学家庭教育心得体会
2016/01/14 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
python非标准时间的转换
2021/07/25 Python