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&amp;java(一)
Oct 09 PHP
《PHP边学边教》(01.开篇――准备工作)
Dec 13 PHP
PHP has encountered an Access Violation
Jan 15 PHP
PHPMailer安装方法及简单实例
Nov 25 PHP
探讨捕获php错误信息方法的详解
Jun 09 PHP
php读取目录所有文件信息dir示例
Mar 18 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
Sep 16 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
Dec 16 PHP
php类的自动加载操作实例详解
Sep 28 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
Apr 15 PHP
PHP Primary script unknown 解决方法总结
Aug 22 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 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 日期加减的类,很不错
2009/10/10 PHP
php获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
参考:关于Javascript中实现暂停的几篇文章
2007/03/04 Javascript
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
JavaScript中定义类的方式详解
2016/01/07 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
Javascript中document.referrer隐藏来源的方法
2017/01/16 Javascript
JavaScript数据结构之链表的实现
2017/03/19 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
你应该知道的python列表去重方法
2017/01/17 Python
python实现日常记账本小程序
2018/03/10 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
python3.4爬虫demo
2019/01/22 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
python如何安装下载后的模块
2020/07/03 Python
学python最电脑配置有要求么
2020/07/05 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
中层干部考核评语
2015/01/04 职场文书
2016新年慰问信范文
2015/03/25 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
Python中的 Set 与 dict
2022/03/13 Python
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA