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 相关文章推荐
Email+URL的判断和自动转换函数
Oct 09 PHP
php for 循环语句使用方法详细说明
May 09 PHP
PHP高自定义性安全验证码代码
Nov 27 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
Jun 23 PHP
php 地区分类排序算法
Jul 01 PHP
PHP实现获取某个月份周次信息的方法
Aug 11 PHP
详细解读PHP中接口的应用
Aug 12 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
微信 开发生成带参数的二维码的实例
Nov 23 PHP
thinkphp中U方法按路由规则生成url的方法
Mar 12 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
Sep 16 PHP
PHP面向对象程序设计继承用法简单示例
Dec 28 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的配置文件php.ini
2006/10/09 PHP
php自动加载机制的深入分析
2013/06/08 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
详解基于iview-ui的导航栏路径(面包屑)配置
2019/02/22 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
Python生成rsa密钥对操作示例
2019/04/26 Python
Python目录和文件处理总结详解
2019/09/02 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
做一个能自适应高度的textarea的示例代码
2019/09/06 HTML / CSS
大学生简历中个人的自我评价
2013/10/06 职场文书
高二物理教学反思
2014/02/08 职场文书
企业管理毕业生求职信范文
2014/03/07 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
消防标语大全
2014/06/07 职场文书
动物科学专业求职信
2014/07/27 职场文书
党委班子剖析材料
2014/08/21 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
走群众路线剖析材料
2014/10/09 职场文书
社区活动总结
2015/02/04 职场文书
2016年中秋节寄语大全
2015/12/07 职场文书
2019已经过半,你知道年中工作总结该怎么写吗?
2019/07/03 职场文书
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python