一般php中文筆劃排序的方式,是把整個中文字串都轉成big5,但很容易因為有unicode字導致排序錯誤,這邊稍微修改一下,只按「第一個字」的中文筆劃排序,並把unicode字丟到後面。
//主要函式
function sortChineseStroke($target){
usort($target, "compare");
$sortArray = array();
$sortArrayLast = array();
$f = 1;
foreach($target as $s){
//這裡的「一」是資料中筆劃最少的字,要依照實際情形修改
if(strpos($s,'一') === 0){
$f = 2;
}
if($f == 1){
array_push($sortArrayLast,$s);
}else if($f == 2){
array_push($sortArray,$s);
}
}
foreach($sortArrayLast as $s){
array_push($sortArray,$s);
}
return $sortArray;
}
//陣列排序函式
function compare($value1, $value2){
$v1 = mb_substr($value1,0,1,"utf-8");
$v2 = mb_substr($value2,0,1,"utf-8");
return strcmp(iconv("UTF-8","big5", $v1),
iconv("UTF-8","big5", $v2));
}
留言
張貼留言