通过GBK编码表获取汉字的拼音,处理短文本更快。

附件:py.dic<?php

class PinYin {

public $pinyin = array();

/**

* 初始化GBK码表对应值

*/

public function __construct(){

// py.dic格式化后的数组

$this -> pinyin = $pinyin_dictory;

}

/**

* 输入字符串,以及要返回的数据形态

* @param type $s 字符串原值

* @param type $first 只要为真返回汉字首字母

* @return type

*/

public function str2py($s, $first = false)

{

//空格的默认转换字符

$s = preg_replace("/\s/is", "_", $s);

//过滤掉所有的非法字符;~,`,!,@#$%^&*()-=+{}[]|\:;"'<>.?/

$s = preg_replace("/(|\~|\`|\!|\@|\#|\$|\%|\^|\&|\*|\(|\)|\-|\+|\=|\{|\}|\[|\]|\||\\|\:|\;|\"|\'|\|\.|\?|\/)/is", "", $s);

//初始化

$py = array();

// 加入这一句,自动识别utf-8

if(strlen("拼音") > 4)

{

$s = iconv('utf-8', 'gbk', $s);//强制转换为GBK编码

}

//循环处理

for ($i = 0;$i < strlen($s);$i++){

if (ord($s[$i]) > 128){

$py[] = $this -> asi2py(ord($s[$i]) +

(ord($s[$i + 1]) << 8), $first);

$i++;

} else {

//处理小写a元素和大写A元素

if ($s[$i] == 'a' || $s[$i] == 'A') {

$py[] = $s[$i].'*';

} else {

$py[] = $s[$i];

}

}

}

//返回结果

return $py;

}

/**

* 查找汉字对应的拼音

* @param type $a

* @param type $first

* @return type

*/

public function asi2py($a, $first)

{

$py = $this -> pinyin;

foreach ($py as $k => $p){

if (array_search($a, $p) === false){

} else{

if ($first) {

return substr(key($py), 0, 1);

}

return key($py);

}

next($py);

}

}

/**

* 根据汉字获取汉字全拼

* @param type $string

* @return type

*/

public function getQp($string)

{

return join($this->str2py($string),'');

}

/**

*

* @param type $string

* @return 根据汉字获获取简拼(汉字首字母)

*/

public function getJp($string)

{

return join($this->str2py($string,1), '');

}

/**

* 根据汉字获取汉字简拼 同时为每个汉字设置分割符号

* @param type $string

* @return type

*/

public function getJpDelimiter($string, $delimiter)

{

$jp = $this->str2py($string,1);

$t1 = "";

foreach($jp as $k => $v) {

if (is_numeric($v)) {

if ($t1) {

$jp[$t1] .= $v;

unset($jp[$k]);

} else {

$t1 = $k;

}

} else {

$t1 = "";

}

}

return join($jp,$delimiter);

}

/**

* 根据汉字获取汉字全拼 同时为每个汉字设置分割符号

* @param type $string

* @return type

*/

public function getQpDelimiter($string, $delimiter)

{

$qp = $this->str2py($string);

$t1 = $t2 = "";

foreach($qp as $k => $v) {

if (is_numeric($v)) {

if ($t1) {

$qp[$t1] .= $v;

unset($qp[$k]);

} else {

$t1 = $k;

}

}

else if($this->checkPy($v)) {

if($v == 'a*'){

$qp[$k] = $v = 'a';

} else if($v == 'A*') {

$qp[$k] = $v = 'A';

}

if ($t2) {

$qp[$t2] .= $v;

unset($qp[$k]);

} else {

$t2 = $k;

}

} else {

$t1 = "";

$t2 = "";

}

}

return join($qp, $delimiter);

}

public function checkPy($py)

{

if ($py == 'a') {

return false;

}

else if ($py == 'a*' || $py == 'A*' || strlen($py) == 1) {

return true;

} else {

return false;

}

}

}

php 获取 拼音,php获取汉字拼音(一)相关推荐

  1. 从全拼音中得到汉字拼音

    --(1) JJ的 create function [dbo].[funcGetPY](@str nvarchar(4000)) returns nvarchar(4000) as begin dec ...

  2. VC++中如何获取GB2312字符集中汉字拼音首字母

    一.关于GB2312编码的必要知识 GB2312编码适用于汉字处理.汉字通信等系统之间的信息交换,通行于中国大陆:新加坡等地也采用此编码.中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312. ...

  3. php 获取 拼音,php根据汉字获取拼音(php基于拼音搜索实现原理)

    php根据汉字获取拼音(php基于拼音搜索实现原理) 代码一:获取字符串汉字首字母,兼容GBK和UTF-8<?php function getfirstchar($s0){ //获取单个汉字拼音 ...

  4. 汉字拼音及拼音码获取

    public class ClassIME_Spell_Code  {   public ClassIME_Spell_Code()   {   } #region 汉字拼音码   /// <s ...

  5. mysql 汉字拼音_Mysql中文汉字转拼音的实现(每个汉字转换全拼)

    一.创建拼音对照表 -- 创建汉字拼音对照临时表 CREATE TABLE IF NOT EXISTS `t_base_pinyin` ( `pin_yin_` varchar(255) CHARAC ...

  6. python怎么识别拼音-python获取一组汉字拼音首字母的方法

    本文实例讲述了python获取一组汉字拼音首字母的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # -*- coding: utf-8 -*- def m ...

  7. vb 获取汉字拼音的首字母

    vb 获取汉字拼音的首字母 Public Function py(mystr As String) As String i = Asc(mystr) Select Case i Case -20319 ...

  8. php 汉字转拼音及获取拼音首字母

    1. 获取拼音(接受中英文混合): // $_Code is utf8 or gb2312 function pinyin($_String, $pix = '', $_Code='utf8') {$ ...

  9. python汉字拼音查询_python获取一组汉字拼音首字母的方法

    本文实例讲述了python获取一组汉字拼音首字母的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # -*- coding: utf-8 -*- def m ...

  10. wp手机开发之获取汉字拼音的首字母

    wp手机开发之获取汉字拼音的首字母 本文章来介绍一下关于wp手机开发之获取汉字拼音的首字母,以前也有讲过获取汉字全部拼音下面我们来看看教程吧. 今天介绍一种新的方法,使用codeplex上开源的项目G ...

最新文章

  1. 图系列|7篇动态时空图网络学习必读的顶会论文
  2. 多元线性回归分析问题
  3. windows 加域
  4. Scribe应用实例
  5. oracle备份密码文件,[数据库]Oracle数据库备份dmp文件,使用cmd命令导入导出步骤,以及忘记Oracle密码_星空网...
  6. 浩鲸科技与帆软达成战略合作,重磅推出数据中台联合解决方案
  7. VS2010与Windows7共舞:对库进行编程
  8. 49个Python的常见操作/技巧/例子
  9. 全球与中国雷达信标市场深度研究分析报告
  10. 【ES6】ES6简介,ES6常用操作,let 、var和const的区别,看完我写的ES6,马上会的,你就是高手
  11. 【计算机网络】第一章--计算机网络概述
  12. dnf剑魂buff等级上限_DNF:95职业加强前瞻,爆发能力明显提升,瞎子大冰可点TP!...
  13. kubernetespod控制器详解上
  14. android intel x86 性能,英特尔解释安卓与x86兼容问题
  15. 《Java 后端面试经》微服务篇
  16. 微信小程序获取手机号并解密详解
  17. VS2008 WEB组件安装失败——解决办法
  18. ARM64中的ASID地址空间标识符
  19. 北京尚学堂JAVA开发学习 MYSQL笔记
  20. 年轻人如何选择自己的工作机会

热门文章

  1. MATLAB调用cpp文件
  2. 【老生谈算法】matlab实现Kmeans算法源码——Kmeans算法
  3. linux系统下面所有命令都失效了,显示bash: xxxxx: command not found...
  4. 无法启动此程序 因为计算机中丢失msvcr71.dll,msvcr71.dll丢失怎样修复?计算机中丢失msvcr71.dll的解决方法...
  5. 2、恩智浦-车规级-MCU :S32K11X GPIO实验
  6. 合宙Luat | 嘿~合宙刚办了一场「大型网友见面会」
  7. 微信小程序转发到朋友圈
  8. VNC远程控制服务器卡顿
  9. DM6437定时器使用
  10. 磨皮ps教程-庞姿姿