PHP obtains the first letter of Chinese pinyin
CopyCode The Code is as follows: <? PHP
Function getinitial ($ Str)
{
$ ASC = ord (substr ($ STR, 0, 1 ));
If ($ ASC <160) // non-Chinese
{
If ($ ASC >=48 & $ ASC <= 57 ){
Return '1'; // number
} Elseif ($ ASC >=65 & $ ASC <= 90 ){
Return CHR ($ ASC); // A--Z
} Elseif ($ ASC >=97 & $ ASC <= 122 ){
Return CHR ($ asc-32); // A -- Z
} Else {
Return '~ '; // Others
}
}
Else // Chinese
{
$ ASC = $ ASC * 1000 + ord (substr ($ STR, 1, 1 ));
// Get the first letter A--Z of Pinyin
If ($ ASC> = 176161 & $ ASC <176197 ){
Return 'a ';
} Elseif ($ ASC >=176197 & $ ASC <178193 ){
Return 'B ';
} Elseif ($ ASC >=178193 & $ ASC <180238 ){
Return 'C ';
} Elseif ($ ASC >=180238 & $ ASC <182234 ){
Return 'D ';
} Elseif ($ ASC >=182234 & $ ASC <183162 ){
Return 'E ';
} Elseif ($ ASC >=183162 & $ ASC <184193 ){
Return 'F ';
} Elseif ($ ASC >=184193 & $ ASC <185254 ){
Return 'G ';
} Elseif ($ ASC >=185254 & $ ASC <187247 ){
Return 'H ';
} Elseif ($ ASC >=187247 & $ ASC <191166 ){
Return 'J ';
} Elseif ($ ASC >=191166 & $ ASC <192172 ){
Return 'K ';
} Elseif ($ ASC >=192172 & $ ASC <194232 ){
Return 'l ';
} Elseif ($ ASC >=194232 & $ ASC <196195 ){
Return 'M ';
} Elseif ($ ASC >=196195 & $ ASC <197182 ){
Return 'n ';
} Elseif ($ ASC >=197182 & $ ASC <197190 ){
Return 'O ';
} Elseif ($ ASC >=197190 & $ ASC <198218 ){
Return 'P ';
} Elseif ($ ASC >=198218 & $ ASC <200187 ){
Return 'q ';
} Elseif ($ ASC >=200187 & $ ASC <200246 ){
Return 'R ';
} Elseif ($ ASC >=200246 & $ ASC <203250 ){
Return's ';
} Elseif ($ ASC >=203250 & $ ASC <205218 ){
Return 'T ';
} Elseif ($ ASC >=205218 & $ ASC <206244 ){
Return 'W ';
} Elseif ($ ASC >=206244 & $ ASC <209185 ){
Return 'X ';
} Elseif ($ ASC >=209185 & $ ASC <212209 ){
Return 'y ';
} Elseif ($ ASC >=212209 ){
Return 'Z ';
} Else {
Return '~ ';
}
}
}
Echo getinitial ("script ");
?>
Copy code The Code is as follows: function getfirstchar ($ S0 ){
$ Firstchar_ord = ord (strtoupper ($ S0 {0 }));
If ($ firstchar_ord> = 65 and $ firstchar_ord <= 91) or ($ firstchar_ord> = 48 and $ firstchar_ord <= 57) return $ S0 {0 };
$ S = iconv ("UTF-8", "gb2312", $ S0 );
$ ASC = ord ($ s {0}) * 256 + ord ($ s {1})-65536;
If ($ ASC >=- 20319 and $ ASC <=-20284) Return "";
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;
}
Echo getfirstchar ("Haha ");