PHP常用函数之获取汉字首字母功能示例


Posted in PHP onOctober 21, 2019

本文实例讲述了PHP常用函数之获取汉字首字母功能。分享给大家供大家参考,具体如下:

//获取汉字的首字母
function getFirstCharters($str)
{
  if (empty($str)) {
    return '';
  }
  //取出参数字符串中的首个字符
  $temp_str = substr($str,0,1);
  if(ord($temp_str) > 127){
    $str = substr($str,0,3);
  }else{
    $str = $temp_str;
    $fchar = ord($str{0});
    if ($fchar >= ord('A') && $fchar <= ord('z')){
      return strtoupper($temp_str);
    }else{
      return null;
    }
  }
  $s1 = iconv('UTF-8', 'gb2312//IGNORE', $str);
  if(empty($s1)){
    return null;
  }
  $s2 = iconv('gb2312', 'UTF-8', $s1);
  if(empty($s2)){
    return null;
  }
  $s = $s2 == $str ? $s1 : $str;
  $asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
  if ($asc >= -20319 && $asc <= -20284)
    return 'A';
  if ($asc >= -20283 && $asc <= -19776)
    return 'B';
  if ($asc >= -19775 && $asc <= -19219)
    return 'C';
  if ($asc >= -19218 && $asc <= -18711)
    return 'D';
  if ($asc >= -18710 && $asc <= -18527)
    return 'E';
  if ($asc >= -18526 && $asc <= -18240)
    return 'F';
  if ($asc >= -18239 && $asc <= -17923)
    return 'G';
  if ($asc >= -17922 && $asc <= -17418)
    return 'H';
  if ($asc >= -17417 && $asc <= -16475)
    return 'J';
  if ($asc >= -16474 && $asc <= -16213)
    return 'K';
  if ($asc >= -16212 && $asc <= -15641)
    return 'L';
  if ($asc >= -15640 && $asc <= -15166)
    return 'M';
  if ($asc >= -15165 && $asc <= -14923)
    return 'N';
  if ($asc >= -14922 && $asc <= -14915)
    return 'O';
  if ($asc >= -14914 && $asc <= -14631)
    return 'P';
  if ($asc >= -14630 && $asc <= -14150)
    return 'Q';
  if ($asc >= -14149 && $asc <= -14091)
    return 'R';
  if ($asc >= -14090 && $asc <= -13319)
    return 'S';
  if ($asc >= -13318 && $asc <= -12839)
    return 'T';
  if ($asc >= -12838 && $asc <= -12557)
    return 'W';
  if ($asc >= -12556 && $asc <= -11848)
    return 'X';
  if ($asc >= -11847 && $asc <= -11056)
    return 'Y';
  if ($asc >= -11055 && $asc <= -10247)
    return 'Z';
  return rare_words($asc);
}
//百家姓中的生僻字
function rare_words($asc=''){
  $rare_arr = array(
    -3652=>array('word'=>"窦",'first_char'=>'D'),
    -8503=>array('word'=>"奚",'first_char'=>'X'),
    -9286=>array('word'=>"酆",'first_char'=>'F'),
    -7761=>array('word'=>"岑",'first_char'=>'C'),
    -5128=>array('word'=>"滕",'first_char'=>'T'),
    -9479=>array('word'=>"邬",'first_char'=>'W'),
    -5456=>array('word'=>"臧",'first_char'=>'Z'),
    -7223=>array('word'=>"闵",'first_char'=>'M'),
    -2877=>array('word'=>"裘",'first_char'=>'Q'),
    -6191=>array('word'=>"缪",'first_char'=>'M'),
    -5414=>array('word'=>"贲",'first_char'=>'B'),
    -4102=>array('word'=>"嵇",'first_char'=>'J'),
    -8969=>array('word'=>"荀",'first_char'=>'X'),
    -4938=>array('word'=>"於",'first_char'=>'Y'),
    -9017=>array('word'=>"芮",'first_char'=>'R'),
    -2848=>array('word'=>"羿",'first_char'=>'Y'),
    -9477=>array('word'=>"邴",'first_char'=>'B'),
    -9485=>array('word'=>"隗",'first_char'=>'K'),
    -6731=>array('word'=>"宓",'first_char'=>'M'),
    -9299=>array('word'=>"郗",'first_char'=>'X'),
    -5905=>array('word'=>"栾",'first_char'=>'L'),
    -4393=>array('word'=>"钭",'first_char'=>'T'),
    -9300=>array('word'=>"郜",'first_char'=>'G'),
    -8706=>array('word'=>"蔺",'first_char'=>'L'),
    -3613=>array('word'=>"胥",'first_char'=>'X'),
    -8777=>array('word'=>"莘",'first_char'=>'S'),
    -6708=>array('word'=>"逄",'first_char'=>'P'),
    -9302=>array('word'=>"郦",'first_char'=>'L'),
    -5965=>array('word'=>"璩",'first_char'=>'Q'),
    -6745=>array('word'=>"濮",'first_char'=>'P'),
    -4888=>array('word'=>"扈",'first_char'=>'H'),
    -9309=>array('word'=>"郏",'first_char'=>'J'),
    -5428=>array('word'=>"晏",'first_char'=>'Y'),
    -2849=>array('word'=>"暨",'first_char'=>'J'),
    -7206=>array('word'=>"阙",'first_char'=>'Q'),
    -4945=>array('word'=>"殳",'first_char'=>'S'),
    -9753=>array('word'=>"夔",'first_char'=>'K'),
    -10041=>array('word'=>"厍",'first_char'=>'S'),
    -5429=>array('word'=>"晁",'first_char'=>'C'),
    -2396=>array('word'=>"訾",'first_char'=>'Z'),
    -7205=>array('word'=>"阚",'first_char'=>'K'),
    -10049=>array('word'=>"乜",'first_char'=>'N'),
    -10015=>array('word'=>"蒯",'first_char'=>'K'),
    -3133=>array('word'=>"竺",'first_char'=>'Z'),
    -6698=>array('word'=>"逯",'first_char'=>'L'),
    -9799=>array('word'=>"俟",'first_char'=>'Q'),
    -6749=>array('word'=>"澹",'first_char'=>'T'),
    -7220=>array('word'=>"闾",'first_char'=>'L'),
    -10047=>array('word'=>"亓",'first_char'=>'Q'),
    -10005=>array('word'=>"仉",'first_char'=>'Z'),
    -3417=>array('word'=>"颛",'first_char'=>'Z'),
    -6431=>array('word'=>"驷",'first_char'=>'S'),
    -7226=>array('word'=>"闫",'first_char'=>'Y'),
    -9293=>array('word'=>"鄢",'first_char'=>'Y'),
    -6205=>array('word'=>"缑",'first_char'=>'G'),
    -9764=>array('word'=>"佘",'first_char'=>'S'),
    -9818=>array('word'=>"佴",'first_char'=>'N'),
    -9509=>array('word'=>"谯",'first_char'=>'Q'),
    -3122=>array('word'=>"笪",'first_char'=>'D'),
    -9823=>array('word'=>"佟",'first_char'=>'T'),
  );
  if(array_key_exists($asc, $rare_arr) && $rare_arr[$asc]['first_char']){
    return $rare_arr[$asc]['first_char'] ;
  }else{
    return null;
  }
}
//测试:
echo getFirstCharters('窦');

运行结果:

D

PHP 相关文章推荐
PHP中将数组转成XML格式的实现代码
Aug 08 PHP
PHP生成不同颜色、不同大小的tag标签函数
Sep 23 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
May 12 PHP
PHP中的事务使用实例
May 26 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
May 09 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
利用PHP获取汉字首字母并且分组排序详解
Oct 22 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
laravel 创建命令行命令的图文教程
Oct 23 PHP
php7 list()、session及其他模块的修改实例分析
May 25 PHP
PHP常用函数之根据生日计算年龄功能示例
Oct 21 #PHP
PHP常用函数之格式化时间操作示例
Oct 21 #PHP
PHP常用函数之base64图片上传功能详解
Oct 21 #PHP
laravel5 Eloquent 实现事务方式
Oct 21 #PHP
基于Laravel 多个中间件的执行顺序详解
Oct 21 #PHP
laravel利用中间件做防非法登录和权限控制示例
Oct 21 #PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 #PHP
You might like
PHP学习散记_编码(json_encode 中文不显示)
2011/11/10 PHP
PHP中SESSION使用中的一点经验总结
2012/03/30 PHP
PHP仿盗链代码
2012/06/03 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
php实现用于计算执行时间的类实例
2015/04/18 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
JS判定是否原生方法
2013/07/22 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
图片动画横条广告带上下滚动的JS代码
2013/10/25 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
JS删除数组里的某个元素方法
2018/02/03 Javascript
vue接入腾讯防水墙代码
2019/05/07 Javascript
图解javascript作用域链
2019/05/27 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
Python中的super()方法使用简介
2015/08/14 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
RetroStage德国:复古服装
2019/02/03 全球购物
Linux常见面试题
2013/03/18 面试题
比赛口号大全
2014/06/10 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
总经理助理岗位职责
2015/01/31 职场文书
贫困证明书范文
2015/06/16 职场文书
学雷锋广播稿大全
2015/08/19 职场文书