• 【美丽中国长江行】常德桃源:做好水文章,答对生态卷 2018-05-26
  • 农业农村部“百乡万户”驻村调研:兴农业 补短板 2018-05-26
  • 女人更年期后,要不要避孕?如何避? 2018-05-25
  • 债市风险有多大?华商系债基今年跌幅已超20% 2018-05-25
  • 供电公司采取小额诉讼手段维权 3个月不交电费将收到律师函 2018-05-25
  • 智能公交让全民体验智慧出行 2018-05-25
  • 杭州男子钓起16斤重“猛兽”,专家一看:可别随意丢弃! 2018-05-25
  • 望川十年,看见中国社会的成长 2018-05-25
  • 哈尔滨市“拔钉子”严查露天烧烤 21家冒烟摊位将被依法处罚 2018-05-24
  • 新濠天地娱乐城官网 2018-05-24
  • “澳门368足球博彩公司”足球比分及时直播李国英主持召开省深化医药卫生体制改革领导小组会议 2018-05-23
  • 马来大选92岁前总理改写政治版图 60年来政党首轮替 2018-05-23
  • 科技创新技能挑战赛聚焦冬奥主题 2018-05-23
  • 泰国试管婴儿bnh医院技术怎么样,是最好的吗?—海口论坛 2018-05-23
  • 置业指南:买高层要注意这些问题 2018-05-22
  • 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 库的应用和编程技术,还能拓宽视野,培养和锻炼自己的黑客思维。读者在阅读本书时也完全感觉不到其他一些技术书籍常见的枯燥和乏味。