之前有分享了用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这个数组存的是复姓库