• 3名中国游客在瑞典遭粗暴对待 外交部敦促瑞方重视中方关切 2018-10-21
  • 国足20-0大胜!女梅西6球,女C罗轰5球,男足才赢19-0 2018-10-21
  • 消协提醒:春节预订酒店有技巧 预付卡消费需谨慎 2018-10-20
  • 陈敏尔唐良智会见传化集团董事长徐冠巨 2018-10-20
  • 扫黑除恶利剑高悬 前8月榕查处违法采砂案件93起 2018-10-20
  • 不能让所谓的收视率愚弄观众 2018-10-18
  • 新希望!中超19岁新星半年增重十斤 曾戏耍恒大两国脚 2018-10-17
  • 迎丰收 晒丰收 庆丰收 2018-10-15
  • “捂脸表情”被注册成商标?申请人不认为商标侵权 2018-10-15
  • 战巡南海、绕岛巡航…空军有“飞出去”的主心骨 2018-10-14
  • 幼儿园要求家长写一万字读后感:不能这样玩家长|幼儿园|家长-教育时讯 2018-10-13
  • 中国故宫文物展在希腊举行 2018-10-13
  • 車·晓 第26期 車企官方降价真相幾何? 2018-10-12
  • 宝沃总裁杨嵩:曾和奔驰宝马同水平 已不能同日而语 2018-10-11
  • 新时代党员干部要有更大的担当和作为 2018-10-10
  • PHP 验证身份证号是否正确的函数

    栏目: 编程语言 发布于: 2014-04-26 19:00:01

    PHP 验证身份证号是否正确的函数,函数代码如下:

    function validation_filter_id_card($id_card){
    	if(strlen($id_card)==18){
    		return idcard_checksum18($id_card);
    	}elseif((strlen($id_card)==15)){
    		$id_card=idcard_15to18($id_card);
    		return idcard_checksum18($id_card);
    	}else{
    		return false;
    	}
    }
    // 计算身份证校验码,根据国家标准GB 11643-1999 
    function idcard_verify_number($idcard_base){
    	if(strlen($idcard_base)!=17){
    		return false;
    	}
    	//加权因子 
    	$factor=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
    	//校验码对应值 
    	$verify_number_list=array('1','0','X','9','8','7','6','5','4','3','2');
    	$checksum=0;
    	for($i=0;$i<strlen($idcard_base);$i++){
    		$checksum += substr($idcard_base,$i,1) * $factor[$i];
    	}
    	$mod=$checksum % 11;
    	$verify_number=$verify_number_list[$mod];
    	return $verify_number;
    }
    // 将15位身份证升级到18位 
    function idcard_15to18($idcard){
    	if(strlen($idcard)!=15){
    		return false;
    	}else{
    		// 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码 
    		if(array_search(substr($idcard,12,3),array('996','997','998','999')) !== false){
    			$idcard=substr($idcard,0,6).'18'.substr($idcard,6,9);
    		}else{
    			$idcard=substr($idcard,0,6).'19'.substr($idcard,6,9);
    		}
    	}
    	$idcard=$idcard.idcard_verify_number($idcard);
    	return $idcard;
    }
    // 18位身份证校验码有效性检查 
    function idcard_checksum18($idcard){
    	if(strlen($idcard)!=18){
    		return false;
    	}
    	$idcard_base=substr($idcard,0,17);
    	if(idcard_verify_number($idcard_base)!=strtoupper(substr($idcard,17,1))){
    		return false;
    	}else{
    		return true;
    	}
    }

    调用方法如:

    validation_filter_id_card('身份证号码');
    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:PHP 验证身份证号是否正确的函数
    IT技术书籍推荐:
    Python黑帽子:黑客与渗透测试编程之道
    Python黑帽子:黑客与渗透测试编程之道
    塞茨 (Justin Seitz) (作者), 孙松柏 (译者), 李聪 (译者), 润秋 (译者)
    本书是畅销书《Python 灰帽子—黑客与逆向工程师的 Python 编程之道》的姊妹篇,那本书一面市便占据计算机安全类书籍的头把交椅。本书由 Immunity 公司的高级安全研究员 Justin Seitz 精心撰写。作者根据自己在安全界,特别是渗透测试领域的几十年经验,向读者介绍了 Python 如何被用在黑客和渗透测试的各个领域,从基本的网络扫描到数据包捕获,从 Web 爬虫到编写 Burp 扩展工具,从编写木马到权限提升等。 作者在本书中的很多实例都非常具有创新和启发意义, 如 HTTP 数据中的图片检测、 基于 GitHub命令进行控制的??榛韭?、浏览器的中间人攻击技术、利用 COM 组件自动化技术窃取数据、通过进程监视和代码插入实现权限提升、通过向虚拟机内存快照中插入 shellcode 实现木马驻留和权限提升等。通过对这些技术的学习,读者不仅能掌握各种 Python 库的应用和编程技术,还能拓宽视野,培养和锻炼自己的黑客思维。读者在阅读本书时也完全感觉不到其他一些技术书籍常见的枯燥和乏味。