说明:

一个PHP函数,可以将UTF-8编码的汉字转换为拼音首字母,由GBK的汉字转拼音首字母的函数修改而来。只转换GBK编码内的汉字,标点、字母及GBK内没有的汉字将直接输出不转换。

用法:

echo $str = 'Hi,YOU想BU想试1下?';

echo pingyinFirstChar($str); // 输出:Hi,YOUXBUXS1X?

下载:

代码:

/************************************************************************************************

** 说明:获取中文拼音首字母

** 注意:接受的字符编码为UTF-8,但只转换GB2312字符集内的字符。

** 作者:upall

** 日期:2010-01-28

** ---------------------------------------------------------------------------------------------

** @param String $sourcestr 需要处理的字符串

** ---------------------------------------------------------------------------------------------

** 例子:字符串“很多 很多 的汉字,编码是UTF-8”将返回“HD HD DHZ,BMSUTF-8”。

************************************************************************************************/

function pingyinFirstChar($sourcestr){

$returnstr='';

$i=0;

$n=0;

$str_length=strlen($sourcestr);//字符串的字节数

while ($i<=$str_length) {

$temp_str=substr($sourcestr,$i,1);

$ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码

if ($ascnum>=224){ //如果ASCII位高与224,

$returnstr=$returnstr.getHanziInitial(substr($sourcestr,$i,3)); //根据UTF-8编码规范,将3个连续的字符计为单个字符

$i=$i+3;//实际Byte计为3

}else if($ascnum>=192){ //如果ASCII位高与192,

$returnstr=$returnstr.getHanziInitial(substr($sourcestr,$i,2)); //根据UTF-8编码规范,将2个连续的字符计为单个字符

$i=$i+2;//实际Byte计为2

}else if($ascnum>=65 && $ascnum<=90){ //如果是大写字母,

$returnstr=$returnstr.substr($sourcestr,$i,1);

$i=$i+1;//实际的Byte数仍计1个

}else{ //其他情况下,包括小写字母和半角标点符号,

$returnstr=$returnstr.strtoupper(substr($sourcestr,$i,1)); //小写字母转换为大写

$i=$i+1;//实际的Byte数计1个

}

}

return $returnstr;

}

function getHanziInitial($s0){

if(ord($s0) >= "1" and ord($s0) <= ord("z")){

return strtoupper($s0);

}

$s = iconv("UTF-8", "gb2312//IGNORE", $s0); // 不要转换成GB2312内没有的字符哦,^_^

$asc = @ord($s{0}) * 256 + @ord($s{1})-65536;

if($asc >= -20319 and $asc <= -20284)return "A";

if($asc >= -20283 and $asc <= -19776)return "B";

if($asc >= -19775 and $asc <= -19219)return "C";

if($asc >= -19218 and $asc <= -18711)return "D";

if($asc >= -18710 and $asc <= -18527)return "E";

if($asc >= -18526 and $asc <= -18240)return "F";

if($asc >= -18239 and $asc <= -17923)return "G";

if($asc >= -17922 and $asc <= -17418)return "H";

if($asc >= -17417 and $asc <= -16475)return "J";

if($asc >= -16474 and $asc <= -16213)return "K";

if($asc >= -16212 and $asc <= -15641)return "L";

if($asc >= -15640 and $asc <= -15166)return "M";

if($asc >= -15165 and $asc <= -14923)return "N";

if($asc >= -14922 and $asc <= -14915)return "O";

if($asc >= -14914 and $asc <= -14631)return "P";

if($asc >= -14630 and $asc <= -14150)return "Q";

if($asc >= -14149 and $asc <= -14091)return "R";

if($asc >= -14090 and $asc <= -13319)return "S";

if($asc >= -13318 and $asc <= -12839)return "T";

if($asc >= -12838 and $asc <= -12557)return "W";

if($asc >= -12556 and $asc <= -11848)return "X";

if($asc >= -11847 and $asc <= -11056)return "Y";

if($asc >= -11055 and $asc <= -10247)return "Z";

return $s0; // 返回原字符,不作转换。(标点、空格、繁体字都会直接返回)

}

?>

<完>

php繁体拼音字母,[UTF-8]汉字转换为拼音首字母pinyinFirstChar.fn.php相关推荐

  1. Excel2007将汉字转换为拼音首字母

    Excel2007将汉字转换为拼音首字母 一.打开Excel,按下"Alt+F11"组合键,弹出"Visual Basic编辑器" 二.点击"Visu ...

  2. python将汉字转换为拼音首字母

    在完成了<学生信息管理系统>后,一天我爸问我,为什么不能用学生姓名拼音首字母搜索,这样会方便不收.我也觉得在理,但是经过我一番搜索资料后,觉得直接在数据库中写函数太过于复杂,不如直接增加一 ...

  3. java汉字转换为拼音首字母

    使用 pinyin4j 2.5.0.jar 进行解决.封装了一个工具类 package com.util;import net.sourceforge.pinyin4j.PinyinHelper; i ...

  4. C#将汉字转换为拼音首字母

    关于这个话题以前曾经使用过一个简便的算法很长时间, 代码如下: private string ToPinyinSingle(string str)         {             if ( ...

  5. ajax返回的数据怎么显示出来_Excel输入汉字、拼音首字母就能显示数据出来,录数据时逐步提示...

    在办公中经常需要录入数据,特别是财务,人力资源,采购这块,经常需要 如果经常复制.粘贴很累,即使用到数据有效性进行设置,数据量多了,也不好选择. 所以,这里介绍两个Excel插件E灵和EXCEL必备工 ...

  6. 如何把汉字生成拼音首字母

    文章目录 使用场景 实现方法 使用场景 希望把一段汉字,转换为拼音首字母,用于搜索等 实现方法 通过EXCEL的宏实现,打开EXCEL,文件→选项→自定义功能区→勾选开发工具 点击开发工具→Visua ...

  7. IOS汉字转拼音首字母

    项目中需要给UITableView建右侧索引,需要获取汉字的拼音首字母,而汉字转拼音一般都是使用CFStringTransform方法 - (NSString*)pinyin {if (self == ...

  8. 汉字转换拼音首字母(可以处理部分多音字)

    一.前言 汉字转拼音貌似一直是C#开发的一个难题,无论什么方案都有一定的bug,之前使用了两种方案. 1.Chinese2Spell.cs 一些不能识别的汉字全部转为Z 2.Microsoft Vis ...

  9. C# 汉字转拼音首字母大写

    我们在手机上经常都能看到通过拼音缩写来搜索好友信息,那么它是如何将一段汉字转换为首字母大写呢 首先我们来了解一下中文在计算机中的结构.计算机识别的是字节,字节(Byte)是计算机信息技术用于计量存储容 ...

最新文章

  1. Unicode 和 UTF-8关系
  2. ubuntu终端快捷键
  3. 马斯克:4年内,SpaceX的第一艘火星飞船将发射
  4. 20169207 2016-2017-2 《网络攻防实践》 黑客资料总结
  5. 压缩感知进阶——有关稀疏矩阵
  6. 用计算机进行资料检索工作是,用计算机进行资料检索工作是属于计算机应用中的什么...
  7. 常见的C#异常及其修复方法
  8. opencv findContours 报错_acrt_first_block == header
  9. Qt工作笔记-QGraphicsProxyWidget放自定义界面实现拖动
  10. 服务器说你注册过多,为什么我的世界服务器说此用户名已被注册我都换了很多用户了都没用 爱问知识人...
  11. matlab打开时总闪一下才打开_大家装窗帘轨道时,是不是多数都是下面这样的: 打开网易新闻 查看更多图片 或者做个窗帘盒,遮盖一下?...
  12. 内容页超连接关键词的完美实现
  13. Luogu P2880 [USACO07JAN]平衡的阵容Balanced Lineup (ST表模板)
  14. 【测试报告】模板:迭代测试报告
  15. 跑跑卡丁车rush服务器维护,跑跑卡丁车Rush+官网版
  16. Android手机设备唯一标识符
  17. 我的世界服务器物品代码,我的世界指令代码大全 2021通用指令代码汇总[多图]...
  18. wordpress菜单显示css字体,WordPress导航菜单图标字体插件font awesome 4 menus
  19. Android全面屏适配笔记
  20. 计算机专业英语完形填空,英语专业四级完形填空练习附答案

热门文章

  1. macbook-12-2015款 安装win10系统 自用 实践笔记
  2. HashMap原理分析,大厂面试题
  3. strcpy函数和strcat函数的使用及实现
  4. python中的数组
  5. [LeetCode]849. Maximize Distance to Closest Person 解题报告(C++)
  6. Java基础笔试题干货
  7. 计算机窗口总是新窗口打开,如何解决文件夹总是在新窗口打开 三种办法解决文件夹总是在新窗口打开...
  8. C#图解教程 第二十五章 其他主题
  9. java---线程安全详解
  10. cocos creator的cc.pageView的禁止触摸翻页