php 获取 拼音,php获取汉字拼音(一)
通过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) JJ的 create function [dbo].[funcGetPY](@str nvarchar(4000)) returns nvarchar(4000) as begin dec ...
- VC++中如何获取GB2312字符集中汉字拼音首字母
一.关于GB2312编码的必要知识 GB2312编码适用于汉字处理.汉字通信等系统之间的信息交换,通行于中国大陆:新加坡等地也采用此编码.中国大陆几乎所有的中文系统和国际化的软件都支持GB 2312. ...
- php 获取 拼音,php根据汉字获取拼音(php基于拼音搜索实现原理)
php根据汉字获取拼音(php基于拼音搜索实现原理) 代码一:获取字符串汉字首字母,兼容GBK和UTF-8<?php function getfirstchar($s0){ //获取单个汉字拼音 ...
- 汉字拼音及拼音码获取
public class ClassIME_Spell_Code { public ClassIME_Spell_Code() { } #region 汉字拼音码 /// <s ...
- mysql 汉字拼音_Mysql中文汉字转拼音的实现(每个汉字转换全拼)
一.创建拼音对照表 -- 创建汉字拼音对照临时表 CREATE TABLE IF NOT EXISTS `t_base_pinyin` ( `pin_yin_` varchar(255) CHARAC ...
- python怎么识别拼音-python获取一组汉字拼音首字母的方法
本文实例讲述了python获取一组汉字拼音首字母的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # -*- coding: utf-8 -*- def m ...
- vb 获取汉字拼音的首字母
vb 获取汉字拼音的首字母 Public Function py(mystr As String) As String i = Asc(mystr) Select Case i Case -20319 ...
- php 汉字转拼音及获取拼音首字母
1. 获取拼音(接受中英文混合): // $_Code is utf8 or gb2312 function pinyin($_String, $pix = '', $_Code='utf8') {$ ...
- python汉字拼音查询_python获取一组汉字拼音首字母的方法
本文实例讲述了python获取一组汉字拼音首字母的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # -*- coding: utf-8 -*- def m ...
- wp手机开发之获取汉字拼音的首字母
wp手机开发之获取汉字拼音的首字母 本文章来介绍一下关于wp手机开发之获取汉字拼音的首字母,以前也有讲过获取汉字全部拼音下面我们来看看教程吧. 今天介绍一种新的方法,使用codeplex上开源的项目G ...
最新文章
- 图系列|7篇动态时空图网络学习必读的顶会论文
- 多元线性回归分析问题
- windows 加域
- Scribe应用实例
- oracle备份密码文件,[数据库]Oracle数据库备份dmp文件,使用cmd命令导入导出步骤,以及忘记Oracle密码_星空网...
- 浩鲸科技与帆软达成战略合作,重磅推出数据中台联合解决方案
- VS2010与Windows7共舞:对库进行编程
- 49个Python的常见操作/技巧/例子
- 全球与中国雷达信标市场深度研究分析报告
- 【ES6】ES6简介,ES6常用操作,let 、var和const的区别,看完我写的ES6,马上会的,你就是高手
- 【计算机网络】第一章--计算机网络概述
- dnf剑魂buff等级上限_DNF:95职业加强前瞻,爆发能力明显提升,瞎子大冰可点TP!...
- kubernetespod控制器详解上
- android intel x86 性能,英特尔解释安卓与x86兼容问题
- 《Java 后端面试经》微服务篇
- 微信小程序获取手机号并解密详解
- VS2008 WEB组件安装失败——解决办法
- ARM64中的ASID地址空间标识符
- 北京尚学堂JAVA开发学习 MYSQL笔记
- 年轻人如何选择自己的工作机会
热门文章
- MATLAB调用cpp文件
- 【老生谈算法】matlab实现Kmeans算法源码——Kmeans算法
- linux系统下面所有命令都失效了,显示bash: xxxxx: command not found...
- 无法启动此程序 因为计算机中丢失msvcr71.dll,msvcr71.dll丢失怎样修复?计算机中丢失msvcr71.dll的解决方法...
- 2、恩智浦-车规级-MCU :S32K11X GPIO实验
- 合宙Luat | 嘿~合宙刚办了一场「大型网友见面会」
- 微信小程序转发到朋友圈
- VNC远程控制服务器卡顿
- DM6437定时器使用
- 磨皮ps教程-庞姿姿