当前位置:网站首页>php中获取汉字拼音大写首字母
php中获取汉字拼音大写首字母
2022-07-02 06:23:00 【夜空の雪風】
前言
在做项目开发的工程中遇到了要把一串中文字符串返回大写首字母的功能,在借鉴网上其他开发者的方法以后整理了一下最好用的一种方法。
问题描述
需要把【下游堆石区】转换成【XYDSQ】。
方法示例
if (!function_exists('getfirstchar')) {
/** * 获取汉字拼音大写首字母 * @param [type] $str * @return void */
function getfirstchar($str)
{
$fchar = ord(substr((string) $str, 0, 1));
if (($fchar >= ord("a") and $fchar <= ord("z")) or ($fchar >= ord("A") and $fchar <= ord("Z"))) {
return strtoupper(chr($fchar));
}
$s = iconv("UTF-8", "GBK", (string) $str);
$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 null;
}
}
if (!function_exists('get_letter')) {
/** * 获取汉字拼音的大写首字母 * @param [type] $string * @return void */
function get_letter($string)
{
$charlist = preg_split('/(?<!^)(?!$)/u', (string) $string);
return implode(array_map("getfirstchar", $charlist));
}
}
使用方法
//【下游堆石区】转换成【XYDSQ】
$zone_name_pinyin = get_letter('下游堆石区');
边栏推荐
- JS modification element attribute flipping commonly used in selenium's Web Automation
- Wechat applet Foundation
- JS to determine whether there is a value in the object in the array
- SQL注入闭合判断
- Linux MySQL 5.6.51 community generic installation tutorial
- ZZQ的博客目录--更新于20210601
- Common function writing method and set get writing method for calculating attributes
- The table component specifies the concatenation parallel method
- 2021-07-17C#/CAD二次开发创建圆(5)
- Atcoder beginer contest 253 F - operations on a matrix / / tree array
猜你喜欢

unittest. Texttestrunner does not generate TXT test reports

Win10:添加或者删除开机启动项,在开机启动项中添加在用户自定义的启动文件

20201002 vs 2019 qt5.14 developed program packaging

由于不正常断电导致的unexpected inconsistency;RUN fsck MANUALLY问题已解决

sqli-labs通关汇总-page2

CAD二次开发 对象

uniapp引入本地字体

SQLI-LABS通关(less15-less17)

sqli-labs通关汇总-page1

apt命令报证书错误 Certificate verification failed: The certificate is NOT trusted
随机推荐
Latex在VSCODE中编译中文,使用中文路径问题解决
Common prototype methods of JS array
In depth study of JVM bottom layer (II): hotspot virtual machine object
Latex warning: citation "*****" on page y undefined on input line*
由於不正常斷電導致的unexpected inconsistency;RUN fsck MANUALLY問題已解决
Brief analysis of PHP session principle
js删除字符串的最后一个字符
CTF web practice competition
How to try catch statements that return promise objects in JS
In depth study of JVM bottom layer (3): garbage collector and memory allocation strategy
Utilisation de la carte et de foreach dans JS
Latex error: the font size command \normalsize is not defined problem solved
Latex 报错 LaTeX Error: The font size command \normalsize is not defined问题解决
js中map和forEach的用法
SQLI-LABS通關(less6-less14)
20201002 vs 2019 qt5.14 developed program packaging
js判断数组中对象是否存在某个值
Nodejs - Express middleware modification header: typeerror [err_invalid_char]: invalid character in header content
Explanation and application of annotation and reflection
Build learning tensorflow