php中文姓名判断

<?php 
 
 
// if(!checkSurname('奶罩')) {
// 	echo "非中文名字";
// } else {
// 	echo "中文名字";
// }
//  echo "<br>";
// if(!checkSurname('王兆镇')) {
// 	echo "非中文名字";
// } else {
// 	echo "中文名字";
// } 
 function checkSurname($user_name)  {
            $array = array( '赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '楮', '卫', '蒋', '沈', '韩', '杨',
                            '朱', '秦', '尤', '许', '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜',
                            '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏', '潘', '葛', '奚', '范', '彭', '郎',
                            '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳', '酆', '鲍', '史', '唐',
                            '费', '廉', '岑', '薛', '雷', '贺', '倪', '汤', '滕', '殷', '罗', '毕', '郝', '邬', '安', '常',
                            '乐', '于', '时', '傅', '皮', '卞', '齐', '康', '伍', '余', '元', '卜', '顾', '孟', '平', '黄',
                            '和', '穆', '萧', '尹', '姚', '邵', '湛', '汪', '祁', '毛', '禹', '狄', '米', '贝', '明', '臧',
                            '计', '伏', '成', '戴', '谈', '宋', '茅', '庞', '熊', '纪', '舒', '屈', '项', '祝', '董', '梁',
                            '杜', '阮', '蓝', '闽', '席', '季', '麻', '强', '贾', '路', '娄', '危', '江', '童', '颜', '郭',
                            '梅', '盛', '林', '刁', '锺', '徐', '丘', '骆', '高', '夏', '蔡', '田', '樊', '胡', '凌', '霍',
                            '虞', '万', '支', '柯', '昝', '管', '卢', '莫', '经', '房', '裘', '缪', '干', '解', '应', '宗',
                            '丁', '宣', '贲', '邓', '郁', '单', '杭', '洪', '包', '诸', '左', '石', '崔', '吉', '钮', '龚',
                            '程', '嵇', '邢', '滑', '裴', '陆', '荣', '翁', '荀', '羊', '於', '惠', '甄', '麹', '家', '封',
                            '芮', '羿', '储', '靳', '汲', '邴', '糜', '松', '井', '段', '富', '巫', '乌', '焦', '巴', '弓',
                            '牧', '隗', '山', '谷', '车', '侯', '宓', '蓬', '全', '郗', '班', '仰', '秋', '仲', '伊', '宫',
                            '宁', '仇', '栾', '暴', '甘', '斜', '厉', '戎', '祖', '武', '符', '刘', '景', '詹', '束', '龙',
                            '叶', '幸', '司', '韶', '郜', '黎', '蓟', '薄', '印', '宿', '白', '怀', '蒲', '邰', '从', '鄂',
                            '索', '咸', '籍', '赖', '卓', '蔺', '屠', '蒙', '池', '乔', '阴', '郁', '胥', '能', '苍', '双',
                            '闻', '莘', '党', '翟', '谭', '贡', '劳', '逄', '姬', '申', '扶', '堵', '冉', '宰', '郦', '雍',
                            '郤', '璩', '桑', '桂', '濮', '牛', '寿', '通', '边', '扈', '燕', '冀', '郏', '浦', '尚', '农',
                            '温', '别', '庄', '晏', '柴', '瞿', '阎', '充', '慕', '连', '茹', '习', '宦', '艾', '鱼', '容',
                            '向', '古', '易', '慎', '戈', '廖', '庾', '终', '暨', '居', '衡', '步', '都', '耿', '满', '弘',
                            '匡', '国', '文', '寇', '广', '禄', '阙', '东', '欧', '殳', '沃', '利', '蔚', '越', '夔', '隆',
                            '师', '巩', '厍', '聂', '晁', '勾', '敖', '融', '冷', '訾', '辛', '阚', '那', '简', '饶', '空',
                            '曾', '毋', '沙', '乜', '养', '鞠', '须', '丰', '巢', '关', '蒯', '相', '查', '后', '荆', '红',
                            '游', '竺', '权', '逑', '盖', '益', '桓', '公', '仉', '督', '晋', '楚', '阎', '法', '汝', '鄢',
                            '涂', '钦', '岳', '帅', '缑', '亢', '况', '后', '有', '琴', '归', '海', '墨', '哈', '谯', '笪',
                            '年', '爱', '阳', '佟', '商', '牟', '佘', '佴', '伯', '赏'
                         );
            $double_array = array(  "万俟", "司马", "上官", "欧阳", "夏侯", "诸葛", "闻人", "东方", "赫连", "皇甫", "尉迟", "公羊",
                                    "澹台", "公冶", "宗政", "濮阳", "淳于", "单于", "太叔", "申屠", "公孙", "仲孙", "轩辕", "令狐",
                                    "锺离", "宇文", "长孙", "慕容", "鲜于", "闾丘", "司徒", "司空", "丌官", "司寇", "子车", "微生",
                                    "颛孙", "端木", "巫马", "公西", "漆雕", "乐正", "壤驷", "公良", "拓拔", "夹谷", "宰父", "谷梁",
                                    "段干", "百里", "东郭", "南门", "呼延", "羊舌", "梁丘", "左丘", "东门", "西门", "南宫"
                             );

            $first_name = utf8sub($user_name, 1);
            $double_name = utf8sub($user_name, 2); 
            if(in_array($first_name,$array) || in_array($double_name, $double_array))
             {
                 return TRUE;
             }else{
                return FALSE;
             }
        }/**
 * UTF8字符串截取函数
 * @param type $str
 * @param type $len
 * @return string
 */
function utf8sub($str,$len,$offset=0)
{
    if($len<0){
            return '';
    }
    $res = '';
   // $offset = 0;
    $chars = 0;
    $count = 0;
    $length = strlen($str);//待截取字符串的字节数
    while($chars<$len && $offset<$length){
            $high = decbin(ord(substr($str,$offset,1)));//先截取客串的一个字节,substr按字节进行截取
            //重要突破,已经能够判断高位字节
            if(strlen($high)<8){//英文字符ascii编码长度为7,通过长度小于8来判断
                    $count = 1;
                    // echo 'hello,I am in','<br>';
            }elseif (substr($high,0,3) == '110') {
                    $count = 2;    //取两个字节的长度
            }elseif (substr($high,0,4) == '1110') {
                    $count = 3;    //取三个字节的长度
            }elseif (substr($high,0,5) == '11110') {
                    $count = 4;

            }elseif (substr($high,0,6) == '111110') {
                    $count = 5;
            }elseif(substr($high,0,7)=='1111110'){
                    $count = 6;
            }
            $res .= substr($str,$offset,$count);
            $chars +=1;
            $offset += $count;
    }
    return $res;
} 
发布了19 篇原创文章 · 获赞 0 · 访问量 434

猜你喜欢

转载自blog.csdn.net/wangzhae/article/details/104514048