>백엔드 개발 >PHP 튜토리얼 >获取汉字拼音首字母函数的疑问

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

WBOY
WBOY원래의
2016-06-23 13:13:201023검색

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 编码由两字节构成,称为区位码


谢谢
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.