1.mysql按字段值的拼音首字母排序
关键词binary :SELECT name FROM topic ORDER BYbinary name asc
2.php获取汉字拼音的第一个字母
直接调用下面的函数即可。如,echo getinitial("丹");
function getinitial($str)
{
$asc=ord(substr($str,0,1));
if($asc<160) //非中文
{
if ($asc>=48 &&$asc<=57){
return '1'; //数字
}elseif ($asc>=65 &&$asc<=90){
return chr($asc); // A--Z
}elseif ($asc>=97 &&$asc<=122){
return chr($asc-32); // a--z
}else{
return '~'; //其他
}
}
else //中文
{
$asc=$asc*1000+ord(substr($str,1,1));
//获取拼音首字母A--Z
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 '~';
}
}
}