因專案需要用到此功能,於是在網上找到乙份**,記錄下來,也讓後來者有個參考。
//獲取漢字的首字母
function getfirstcharters($str
)
//取出引數字串中的首個字元
$temp_str = substr($str,0,1);
if(ord($temp_str) > 127)
else
);
if ($fchar >= ord('a') && $fchar
<= ord('z'))
else
}$s1 = iconv('utf-8', 'gb2312//ignore', $str
);
if(empty($s1
))
$s2 = iconv('gb2312', 'utf-8', $s1
);
if(empty($s2
))
$s = $s2 == $str ? $s1 : $str
;
$asc = ord($s) * 256 + ord($s) - 65536;
if ($asc >= -20319 && $asc
<= -20284)
return 'a';
if ($asc >= -20283 && $asc
<= -19776)
return 'b';
if ($asc >= -19775 && $asc
<= -19219)
return 'c';
if ($asc >= -19218 && $asc
<= -18711)
return 'd';
if ($asc >= -18710 && $asc
<= -18527)
return 'e';
if ($asc >= -18526 && $asc
<= -18240)
return 'f';
if ($asc >= -18239 && $asc
<= -17923)
return 'g';
if ($asc >= -17922 && $asc
<= -17418)
return 'h';
if ($asc >= -17417 && $asc
<= -16475)
return 'j';
if ($asc >= -16474 && $asc
<= -16213)
return 'k';
if ($asc >= -16212 && $asc
<= -15641)
return 'l';
if ($asc >= -15640 && $asc
<= -15166)
return 'm';
if ($asc >= -15165 && $asc
<= -14923)
return 'n';
if ($asc >= -14922 && $asc
<= -14915)
return 'o';
if ($asc >= -14914 && $asc
<= -14631)
return 'p';
if ($asc >= -14630 && $asc
<= -14150)
return 'q';
if ($asc >= -14149 && $asc
<= -14091)
return 'r';
if ($asc >= -14090 && $asc
<= -13319)
return 's';
if ($asc >= -13318 && $asc
<= -12839)
return 't';
if ($asc >= -12838 && $asc
<= -12557)
return 'w';
if ($asc >= -12556 && $asc
<= -11848)
return 'x';
if ($asc >= -11847 && $asc
<= -11056)
return 'y';
if ($asc >= -11055 && $asc
<= -10247)
return 'z';
return rare_words($asc
); }
//百家姓中的生僻字
function rare_words($asc='')
else
}
php獲取漢字首字母的函式
網上的方法有不少,都是一樣的原理,按照需求,做了一下版本的class類檔案,主要功能是 功能明確,易於修改維護和擴充套件 英文的字串 不變返回 包括數字 中文字串 返回拼音首字元 中英混合串 返回拼音首字元和英文。該演算法採用了二分法查詢,修復了之前字母z讀取成y的錯誤。好東西要,故在此留下印記,以...
漢字轉拼音 漢字首字母
region 漢字轉換成拼音 漢字轉換成拼音 中文字串 每個漢字拼音間隔符號 返回帶間隔符的拼音串 public static string ntconverttopinyin string chrstr,char compartsign i1 short array 0 i2 short arra...
java獲取漢字首字母
public class chinesefcutil 二十六個字母區間對應二十七個端點 gb2312碼漢字區間十進位制表示 private static int table new int 27 對應首字母區間表 private static char initialtable 初始化 static...