A recent project has a need to extract the initials of each word in a sea classifier of Chinese and English (including Arabic numeral 0-9):
Gannicus-->g
Free-->z
2b-->e
Silly X-->s
Copy Code code as follows:
Private function Getfirstchar ($s 0) {
$s =iconv (' UTF-8 ', ' gb2312 ', $s 0);
if (Ord ($s 0) >128) {//Kanji start
$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 "I";
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";
}else if (ord ($s) >=48 and Ord ($s) <=57) {//number beginning
Switch (ICONV_SUBSTR ($s, 0,1, ' utf-8 '))
{
Case 1:return "Y";
Case 2:return "E";
Case 3:return "S";
Case 4:return "S";
Case 5:return "W";
Case 6:return "L";
Case 7:return "Q";
Case 8:return "B";
Case 9:return "J";
Case 0:return "L";
}
}else if (ord ($s) >=65 and Ord ($s) <=90) {//Capital English beginning
Return substr ($s, 0, 1);
}else if (ord ($s) >=97 and Ord ($s) <=122) {//lowercase English beginning
Return Strtoupper (substr ($s, 0, 1));
}
Else
{
Return Iconv_substr ($s 0,0,1, ' utf-8 ');//English mixed words, not suitable for all the above conditions, so directly extract the first character can
}
}
Legacy problem: There are still a few words can not be extracted, such as the Eternal, the G did not extract
The final effect is as shown: