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 相关文章推荐
5.PHP的其他功能
Oct 09 PHP
smarty实例教程
Nov 19 PHP
PHP+Mysql日期时间如何转换(UNIX时间戳和格式化日期)
Jul 15 PHP
谈谈关于php的优点与缺点
Apr 11 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
Apr 26 PHP
基于php iconv函数的使用详解
Jun 09 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
php 如何禁用eval() 函数实例详解
Dec 01 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
Jun 12 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
Mar 31 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
跟我学Laravel之快速入门
2014/10/15 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
php简单判断文本编码的方法
2015/07/30 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
Ucren Virtual Desktop V2.0
2006/11/07 Javascript
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
JavaScript中的typeof操作符用法实例
2014/04/05 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
浏览器兼容性问题大汇总
2015/12/17 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
Jquery获取第一个子元素简单实例
2016/06/02 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
解决Angular4项目部署到服务器上刷新404的问题
2018/08/31 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
Python中str.format()详解
2017/03/12 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
Tensorflow 实现分批量读取数据
2020/01/04 Python
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
营销与策划应届生求职信
2013/11/04 职场文书
法学专业毕业生自荐信范文
2013/12/18 职场文书
库房管理员岗位职责
2014/03/09 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
党委班子对照检查材料
2014/08/19 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
工商局领导班子存在的问题整改措施思想汇报
2014/10/05 职场文书
党员批评与自我批评思想汇报
2014/10/08 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL