PHP验证二代身份证

PHP验证二代身份证functionvalidation_filter_id_card($id_card){ if(strlen($id_card)==18){ returnidcard_checksum18($id_card); }elseif((strlen($id_card)==15)){ $id_card=idcard_15to18($id_card); return

大家好,又见面了,我是你们的朋友全栈君。

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; 
	} 
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153652.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 360天擎卸载密码忘记了_天擎关闭密码

    360天擎卸载密码忘记了_天擎关闭密码前言MySQL8相比之前版本改动还是挺大的,因为刚从安装接触,就先从基本的说起。现在的mysql8安装只能采用解压配置版,像以前老版本的傻瓜式安装将不复存在。注意点MySQL8之后并不需要my.ini,会自动的生成data文件夹在解压之后的文件,端口默认3306,。若有这个文件,则初始化mysql不成功。自己若新建并设置了my.ini文件,有data文件的话,在初始化之前要删除。然后再初始化在初…

  • docker部署jenkins安装使用教程_docker搭建python开发环境

    docker部署jenkins安装使用教程_docker搭建python开发环境前言使用docker安装jenkins环境,jenkins构建的workspace目录默认是在容器里面构建的,如果我们想执行python3的代码,需进容器内部安装python3的环境。进jenki

  • WBEM简介_叶文玲的简介

    WBEM简介_叶文玲的简介from:http://blog.csdn.net/hkbyest/archive/2007/07/16/1693649.aspx%windir%\system32\wbem文件夹是什么wbem文

  • modelsim 安装教程(应用未安装)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、Modelsim安装二、破解1.拷贝Crack文件夹中的文件2.破解过程可能出现的错误前言Modelsim的安装与破解使用一、Modelsim安装打开下在之后的文件夹,直接双击exe文件进行安装。不熟悉时,可以直接使用默认路径进行安装,不进行路径上的修改。1、下载并解压好文件包,然后运行安装程序根据向导提示进行软件安装2、依提示安装软件过程中需要注意的是,会有三个弹出框提示,首先是是否创建桌面快捷方式提示

  • 某大学计算机系主任王教授对新来系里工作的,某大学计算机系的系主任王教授对新来系里工作的刘博士说:“下周一上午我们谈谈,我想请你介绍一下_搜题易…

    某大学计算机系主任王教授对新来系里工作的,某大学计算机系的系主任王教授对新来系里工作的刘博士说:“下周一上午我们谈谈,我想请你介绍一下_搜题易…

  • mapminmax 用法

    mapminmax 用法mapminmax是MATLAB实现归一化的工具包,默认:(1)将矩阵的每行分别进行归一化;(2)每行的最大值最小值作为每行归一化的xmin和xmax;(3)将数据归一化到[-1,1].若要将数据归一化到0到1之间,即y∈[0,1],使用b=mapminmax(a,0,1);若给与确定的最大值和最小值作为每行的xmin和xmax,使用:b= mapminmax(a,0,1);PS.xmin…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号