Php obtains the first letter of Chinese pinyin
Copy codeThe 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 codeThe 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 ");