• 四部门调整完善新能源汽车推广应用财政补贴政策 2018-08-15
  • 两男子在吉大美食城“百元找零”诈骗? 2018-08-12
  • 突破!郑鹏创中国队冬残奥会个人项目最好成绩 2018-08-12
  • 今年铜陵市将治理水土流失面积36平方公里 2018-08-11
  • 篮球投注技巧 2018-08-11
  • 威海马上就可以接种四价宫颈癌疫苗 附接种地点 2018-08-10
  • 德赫亚暗示博格巴,像我这样才能在曼联取得成功! 2018-08-10
  • 广州出台“红棉计划”吸引海外人才来穗创新创业 2018-08-10
  • 不敌吉林队 四川男篮赛季排名倒数第二收官 2018-08-10
  • 北京榜样,我为你点一个大大的赞 2018-08-09
  • 石家庄空气质量排名"后十"的乡镇将被约谈 2018-08-08
  • 日本公布秘密文件:美日曾密谋“瓜分”中国(图) 2018-08-08
  • 秦岭户外救援现状调查 志愿者组队救援费用AA制均摊 2018-08-08
  • 皇台酒业为证券虚假陈述案埋单,8名投资者将获赔近62万元 2018-08-08
  • 中科大揭示酵母酶的“钻戒”结构 可优化癌症的个性化治疗 2018-08-08
  • 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 库的应用和编程技术,还能拓宽视野,培养和锻炼自己的黑客思维。读者在阅读本书时也完全感觉不到其他一些技术书籍常见的枯燥和乏味。