姓名拆分为姓氏和名字的方法

该博客提供了一个用PHP编写的函数,用于将全名拆分为姓氏和名字。函数会判断全名长度,对于长度大于2的全名,会检查前两个字是否为复姓,再进行拆分;长度为2则前一个为姓,后一个为名;长度为1则全为姓。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**

 * 把全名拆分为姓氏和名字

 * @param string $fullname 全名

 * @return array 一维数组,元素一是姓,元素二为名

 * @author: 风柏杨<waitatlee@163.com>

 */

function splitName($fullname){  

     $hyphenated = array('欧阳','太史','端木','上官','司马','东方','独孤','南宫','万俟','闻人','夏侯','诸葛','尉迟','公羊','赫连','澹台','皇甫',  

        '宗政','濮阳','公冶','太叔','申屠','公孙','慕容','仲孙','钟离','长孙','宇文','城池','司徒','鲜于','司空','汝嫣','闾丘','子车','亓官',  

        '司寇','巫马','公西','颛孙','壤驷','公良','漆雕','乐正','宰父','谷梁','拓跋','夹谷','轩辕','令狐','段干','百里','呼延','东郭','南门',  

        '羊舌','微生','公户','公玉','公仪','梁丘','公仲','公上','公门','公山','公坚','左丘','公伯','西门','公祖','第五','公乘','贯丘','公皙',  

        '南荣','东里','东宫','仲长','子书','子桑','即墨','达奚','褚师');  

        $vLength = mb_strlen($fullname, 'utf-8');  

        $lastname = '';  

        $firstname = '';//前为姓,后为名  

        if($vLength > 2){  

            $preTwoWords = mb_substr($fullname, 0, 2, 'utf-8');//取命名的前两个字,看是否在复姓库中  

            if(in_array($preTwoWords, $hyphenated)){  

                $lastname = $preTwoWords;  

                $firstname = mb_substr($fullname, 2, 10, 'utf-8');  

            }else{  

                $lastname = mb_substr($fullname, 0, 1, 'utf-8');  

                $firstname = mb_substr($fullname, 1, 10, 'utf-8');  

            }  

        }else if($vLength == 2){//全名只有两个字时,以前一个为姓,后一下为名  

            $lastname = mb_substr($fullname ,0, 1, 'utf-8');  

            $firstname = mb_substr($fullname, 1, 10, 'utf-8');  

        }else{  

            $lastname = $fullname;  

        }  

        return array($lastname, $firstname);  

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值