欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

获取汉字拼音首字母函数的疑问

程序员文章站 2024-02-14 18:32:52
...
public function getinitial($str){
$asc=ord(substr($str,0,1));
if ($asc if ($asc>=48 && $asc return '1'; //数字
}elseif ($asc>=65 && $asc return chr($asc); // A--Z
}elseif ($asc>=97 && $asc return chr($asc-32); // a--z
}else{
return '~'; //其他
}
}else{ //中文
$asc=$asc*1000+ord(substr($str,1,1));
//获取拼音首字母A--Z
if ($asc>=176161 && $asc return 'A';
}elseif ($asc>=176197 && $asc return 'B';
}elseif ($asc>=178193 && $asc return 'C';
}elseif ($asc>=180238 && $asc return 'D';
}elseif ($asc>=182234 && $asc return 'E';
}elseif ($asc>=183162 && $asc return 'F';
}elseif ($asc>=184193 && $asc return 'G';
}elseif ($asc>=185254 && $asc return 'H';
}elseif ($asc>=187247 && $asc return 'J';
}elseif ($asc>=191166 && $asc return 'K';
}elseif ($asc>=192172 && $asc return 'L';
}elseif ($asc>=194232 && $asc return 'M';
}elseif ($asc>=196195 && $asc return 'N';
}elseif ($asc>=197182 && $asc return 'O';
}elseif ($asc>=197190 && $asc return 'P';
}elseif ($asc>=198218 && $asc return 'Q';
}elseif ($asc>=200187 && $asc return 'R';
}elseif ($asc>=200246 && $asc return 'S';
}elseif ($asc>=203250 && $asc return 'T';
}elseif ($asc>=205218 && $asc return 'W';
}elseif ($asc>=206244 && $asc return 'X';
}elseif ($asc>=209185 && $asc return 'Y';
}elseif ($asc>=212209){
return 'Z';
}else{
return '~';
}
}
}

这些176161 、176197怎么得来的,求大神指点


回复讨论(解决方案)

你这个是根据 gb2312 一级字库 得来的
gb2312 分为 一级字库(按汉语拼音首字母排列)和 二级字库(按偏旁部首排列)

gb2312 编码由两字节构成,称为区位码

你这个是根据 gb2312 一级字库 得来的
gb2312 分为 一级字库(按汉语拼音首字母排列)和 二级字库(按偏旁部首排列)

gb2312 编码由两字节构成,称为区位码


谢谢