之前有分享了用javascript在客戶端進行姓名拆分的方法後應項目需要又用PHP實現了貼出來跟大家分享交流
/**
* 把全名拆分為姓氏和名字
* @param string $fullname 全名
* @return array 一維數組元素一是姓元素二為名
* @author: 風柏楊<>
*/
function splitName($fullname){
$hyphenated = array(歐陽太史端木上官司馬東方獨孤南宮萬俟聞人夏侯諸葛尉遲公羊赫連澹台皇甫
宗政濮陽公冶太叔申屠公孫慕容仲孫鐘離長孫宇文城池司徒鮮於司空汝嫣闾丘子車亓官
司寇巫馬公西颛孫壤驷公良漆雕樂正宰父谷梁拓跋夾谷軒轅令狐段干百裡呼延東郭南門
羊舌微生公戶公玉公儀梁丘公仲公上公門公山公堅左丘公伯西門公祖第五公乘貫丘公皙
南榮東裡東宮仲長子書子桑即墨達奚褚師);
$vLength = mb_strlen($fullname utf);
$lastname = ;
$firstname = ;//前為姓後為名
if($vLength > ){
$preTwoWords = mb_substr($fullname utf);//取命名的前兩個字看是否在復姓庫中
if(in_array($preTwoWords $hyphenated)){
$lastname = $preTwoWords;
$firstname = mb_substr($fullname utf);
}else{
$lastname = mb_substr($fullname utf);
$firstname = mb_substr($fullname utf);
}
}else if($vLength == ){//全名只有兩個字時以前一個為姓後一下為名
$lastname = mb_substr($fullname utf);
$firstname = mb_substr($fullname utf);
}else{
$lastname = $fullname;
}
return array($lastname $firstname);
}
其中$hyphenated這個數組存的是復姓庫
From:http://tw.wingwit.com/Article/program/Web/201404/30633.html