汉字转换拼音字头原理实践
今天照常登陆php新闻网站,看到首页的一则文字类的新闻,汉字转换拼音字头原理,闲来无事,用php实践下,把它写出来
/**
* 汉字转换为拼音字头
* @author jkj
*/
class HzToPyHeader
{
//传说中的160,16进制为a0,so..
static $BaseCode = 0xa0;
// 国标一级汉字不同读音的起始区位码
private $secPosValueList = array(
1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212, 3472,
3635, 3722, 3730, 3858, 4027, 4086, 4390, 4558, 4684, 4925, 5249, 9999);
// 国标一级汉字不同读音的起始区位码对应读音
private $firstLetter = array(
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
'q', 'r', 's', 't', 'w', 'x', 'y', 'z');
// 区位码=字节的ASCII码-160(汉字基数),而一个汉字的区位码为字节相加值,例蒋(29,15) 2915
// ps : 以下都以gb2312为例,一般一个汉字占2个字节,
// 第一个字节的ASCII码-160(汉字基数)按拼音排序都在16-55之间
function __construct(){
}
/**
* Hanzi section-position code
* 得到汉字的区位码
* @param string $hanzi
* @return array
*/
final function secposcode($hanzi){
$spc = array();
for($i=0; $i<strlen($hanzi); $i++)
{
$_P = ord(substr($hanzi, $i, 1))-self::$BaseCode;
$_G = ord(substr($hanzi, ++$i, 1))-self::$BaseCode;
if($_G<10) $_G = "0".strval($_G);
$spc[] = strval($_P).strval($_G);
}
return $spc;
}
final function getFirst($hz){
$rs = array();
foreach ($this->secposcode($hz) as $k=>$v){
foreach ($this->secPosValueList as $in_k=>$in_v){
if($v>=$in_v) $rs[$k]=$this->firstLetter[$in_k];
}
}
return implode("",$rs);
}
}
$htph = new HzToPyHeader();
print_r($htph->secposcode("蒋某人"));
echo $htph->getFirst("蒋某人");
汉字转换拼音字头原理实践相关推荐
- 汉字转换为拼音字头的工具类与原理
基础知识 GB 2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个. 分区表示 GB 2312中对所收汉字进行了"分区"处理,每区含有94个汉字/符号.这 ...
- 昵称到拼音php,php 汉字转换拼音程序_PHP教程
php 汉字转换拼音程序 $p=ord(substr($str,$i,1)); if($p>160){ $q=ord(substr($str,++$i,1)); $p=$p*256+$q-655 ...
- php汉字转换拼音,PHP汉字转换拼音的函数代码
/************ *汉字转换拼音Class *************/ class pin{ function Pinyin($_String, $_Code='gb2312'){ $_D ...
- php 汉字转拼音类,PHP汉字转换拼音的类_php
网络上类似的代码大多只能在gb2312编码下使用,下面这个类同时能在utf-8编码下将汉字转换为拼音,具体的代码和用法如下: function Pinyin($_String, $_Code='gb2 ...
- Java汉字转换拼音工具类
1. 使用pinyin4j 1.1 引入相关maven依赖 <dependency><groupId>com.belerweb</groupId><artif ...
- 中文汉字转换拼音PHP类
1 <?php 2 /** 3 * 中文汉字转换拼音类 4 * 功能支持 5 * 1.支持中文转换全拼 6 * 2.支持中文转换简拼(首字母) 7 * 3.支持转换的字符串返回格式设置(字符中间 ...
- java汉字转换拼音
1.汉字转换拼音首先引入一个叫pinyin4j-2.5.0.jar 下载地址:http://download.csdn.net/detail/yao__shun__yu/4670228 2.测试代码 ...
- java 汉字转换拼音
java 汉字转换拼音 maven依赖 <dependency><groupId>com.belerweb</groupId><artifactId>p ...
- php汉字转换拼音,PHP汉字转换拼音
搜索热词 下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. /************ *汉字转换拼音Class *2012.12 **** ...
最新文章
- ubuntu安装OpenCV详细教程(建议收藏)
- Linux/Ubuntu
- 直播预告 | 长文本知识抽取:基于语义分割的文档级三元组关系抽取
- vc中ASSERT()和VERIFY()区别
- 小程序css之圆角边框
- android 崩溃捕获框架,DefenseCrash
- java工具链 有什么_Iodine:一个优秀的Java语言工具链
- 无需U盘在Windows下安装Linux系统实现双系统(非子系统)
- python中类的实例化_python类的实例化
- 基于MC1496乘法器的AM信号调制
- 读书-思考力|《金字塔原理》
- 【PI控制】位置式PI的拉普拉斯变化和离散化(在开关电源的应用)
- indesign用于产品排班_怎样利用Indesign来进行高效的排版ID:30077776
- H5点击复制按钮复制文本
- 二分匹配Hopcroft-Carp算法
- iOS视频 压缩过程 AVAssetExportSessionStatusFailed 文件创建失败
- 【无标题】体验scratch海底世界
- LTE 系统信息SI
- Linux安装mysql没有my.cnf文件
- pubg手机版服务器维护,pubg国际版服务器维护