PHP获取中英文字符串的首字母

使用场景:在对地区进行筛选时,我们经常会看到按照英文字母进行筛选定位,起初想着是数据表里存储上地区与首字母关联关系,但是觉得太麻烦,然后就想着根据地区名称来获取首字母,然后对地区进行分组,由此便用到了如下方法:

function getFirstCharter($str) {
    if (empty($str)) {
        return ‘‘;
    }
    $fchar = ord($str{0});
    if ($fchar >= ord(‘A‘) && $fchar <= ord(‘z‘)) return strtoupper($str{0});
    $s1 = iconv(‘UTF-8‘, ‘gb2312‘, $str);
    $s2 = iconv(‘gb2312‘, ‘UTF-8‘, $s1);
    $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 null;
}

BY bjr  2018-01-28 15:00:45

原文地址:https://www.cnblogs.com/widgetbox/p/8371189.html

时间: 2024-08-29 12:00:33

PHP获取中英文字符串的首字母的相关文章

获取任意字符串的首字母. 原理:根据gb2312编码是按拼音排序

<?php $limit=array( //gb2312 拼音排序 array(45217,45252), //A array(45253,45760), //B array(45761,46317), //C array(46318,46825), //D array(46826,47009), //E array(47010,47296), //F array(47297,47613), //G array(47614,48118), //H array(0,0), //I array(48

好用的获取中文字符串拼音首字母的方法(亲测)

function getFirstCharter($str){ if(empty($str)){return '';} $fchar=ord($str{0}); if($fchar>=ord('A')&&$fchar<=ord('z')) return strtoupper($str{0}); $s1=iconv('UTF-8','gb2312',$str); $s2=iconv('gb2312','UTF-8',$s1); $s=$s2==$str?$s1:$str; $as

String-需求把一个字符串的首字母转成大写,其余为小写(只考虑英文大小写字母字符)

package cn.lianxi; public class DaXiao { public static void main(String[] args) { /*需求把一个字符串的首字母转成大写,其余为小写(只考虑英文大小写字母字符) * 分析: * 1.先获取第一个字符 * 2.获取除了第一个字符的以外字符 * 3.把第一个字符转成大写 * 4.把第一个字符转成大写 * 5.把除第一个字符以外的字符转成小写 * 6.字符串拼接 * */ String str = "helloWORLD&

asp.net获取中文汉字的首字母

/// <summary>  /// 通过汉字区位码得到其首字母(小写)  /// </summary>  /// <param name="nCode">汉字编码</param>  /// <returns></returns>  public string FirstLetter(int nCode) {   if (nCode >= 1601 && nCode < 1637) re

C# 获取汉字的拼音首字母(转)

原文:https://blog.csdn.net/younghaiqing/article/details/62417269 一种是把所有中文字符集合起来组成一个对照表:另一种是依照汉字在Unicode编码表中的排序来确定拼音的首字母.碰到多音字时就以常用的为准(第一种方法中可以自行更改,方法为手动把该汉字移动到对应的拼音首字母队列,我们这里介绍第二种. 获取汉字拼音的首字母是一个在做项目的过程中经常需要用到的功能,今天我们主要来探讨下C# 获取汉字的拼音首字母 static void Main

oracle函数获取汉字拼音的首字母

CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL(P_NAME IN VARCHAR2) RETURN VARCHAR2 AS V_COMPARE VARCHAR2(100); V_RETURN VARCHAR2(4000); FUNCTION F_NLSSORT(P_WORD IN VARCHAR2) RETURN VARCHAR2 AS BEGIN RETURN NLSSORT(P_WORD, 'NLS_SORT=SCHINESE_PINYI

php获取中文字符拼音首字母

//php获取中文字符拼音首字母 function getFirstCharter($str){ if(empty($str)){ return ''; } $fchar = ord($str{0}); if($fchar >= ord('A') && $fchar <= ord('z')){ return strtoupper($str{0}); } $s1=iconv('UTF-8','gb2312',$str); $s2=iconv('gb2312','UTF-8',$s

在vc中实现获取汉字拼音的首字母

在vc中实现获取汉字拼音的首字母 void GetFirstLetter(CString strName, CString& strFirstLetter){    TBYTE ucHigh, ucLow;    int  nCode;    CString strRet;    strFirstLetter.Empty();    for (int i=0; i<strName.GetLength(); i++)    {        if ( (TBYTE)strName[i] <

字符串按首字母分组并ToDictionary的实现

这是携程(深圳).net开发笔试的一道题目,要求实现字符串按首字母分组并ToDictionary输出,当时没有做出来,后面研究了一下,现在将这道题的几种实现方式记录下来. 首先初始化数据源,是一个List<string>对象.如下代码. //数据源 List<string> list = new List<string> { "Beijing", "Shanghai", "Tianjin", "Cho