php 验证身份证合法性
function checkIdcard($num = '')
{
$length = strlen($num);
if ($length == 15) { //如果是15位身份证 //15位身份证没有字母
if (!is_numeric($num)) {
return false;
}
// 省市县(6位)
$areaNum = substr($num, 0, 6);
// 出生年月(6位)
$dateNum = substr($num, 6, 6); } else if ($length == 18) { //如果是18位身份证 //基本格式校验
if (!preg_match('/^\d{17}[0-9xX]$/', $num)) {
return false;
}
// 省市县(6位)
$areaNum = substr($num, 0, 6);
// 出生年月日(8位)
$dateNum = substr($num, 6, 8); } else { //假身份证
return false;
} $provinceCode = substr($areaNum, 0, 2); // 根据GB/T2260—999,省市代码11到65
if (11 > $provinceCode || $provinceCode > 65) {
return false;
} //验证日期
if (strlen($dateNum) == 6) { //15位身份证号没有年份,这里拼上年份
$dateNum = '19'.$dateNum;
}
$year = intval(substr($dateNum, 0, 4));
$month = intval(substr($dateNum, 4, 2));
$day = intval(substr($dateNum, 6, 2)); //日期基本格式校验
if (!checkdate($month, $day, $year)) {
return false;
} //日期格式正确,但是逻辑存在问题(如:年份大于当前年)
$currYear = date('Y');
if ($year > $currYear) {
return false;
} //验证最后一位
if (strlen($num) == 18) {
$factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
$tokens = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; $checkSum = 0;
for ($i = 0; $i < 17; $i++) {
$checkSum += intval($num{$i}) * $factor[$i];
} $mod = $checkSum % 11;
$token = $tokens[$mod]; $lastChar = strtoupper($num{17}); if ($lastChar != $token) {
return false;
}
} return true;
}
php 验证身份证合法性的更多相关文章
- SQL Server 验证身份证合法性函数(使用VBScript.RegExp)
原文:SQL Server 验证身份证合法性函数(使用VBScript.RegExp) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wzy0623 ...
- 验证身份证合法性的js
分别对15和18位的身份证号进行验证,非常严格. function idCardNo(value){ //验证身份证号方法 : : : : : : : : : : : : : : : : : : : ...
- JS验证身份证的合法性
//验证身份证的合法性 function IdentityCodeValid(code) { var city={11:"北京",12:"天津",13:&quo ...
- js 精确验证身份证(地址编码、出生日期、校验位验证)
//身份证号合法性验证 //支持15位和18位身份证号 //支持地址编码.出生日期.校验位验证 function IdentityCodeValid(code) { ::::::::::::::::: ...
- PHP验证身份证格式
互联网公司对身份证验证的需求越来越多,然而普通的小公司是无法对接公安部门的身份认证系统的.几乎都是在网上买一些大的互联网公司的一些认证服务.即使是便宜一些的认证价格也达到了10万次/万元.也就是一角钱 ...
- JAVA代码验证身份证信息
java验证身份证信息代码 转自:http://www.blogjava.net/xylz/archive/2011/01/05/342330.html import java.util.Calend ...
- php验证身份证号码的正确性
/********************php验证身份证号码是否正确函数*********************/function is_idcard( $id ) { $id = strto ...
- jQuery validation学习(2)验证身份证
验证邮编 jQuery.validator.addMethod("isZipCode", function(value, element) { -]{}$/; return thi ...
- C#验证身份证号码
一.18位的身份证号码 如:130429####%%%%00781.1~6位为地区代码,其中1.2位数为各省级政府的代码,3.4位数为地.市级政府的代码,5.6位数为县.区级政府代码.如13(河北省) ...
- php验证身份证号码正确性
发布:JB01 来源:脚本学堂 [大 中 小] 分享一例php代码,用于验证身份证号码的正确性,用到了preg_match.preg_replace函数,有需要的朋友可以参考学习下.本文转 ...
随机推荐
- sudo apt update 没有 Release 文件
注: 不同环境出错原因可能不同,本文仅供参考. 今天在Ubuntu 19.04 系统运行指令 sudo apt update 时,忽然提示错误,报错如下: 404 Not Found [IP: 101 ...
- 新建zabbix数据库
1.安装mysqldnf install -y @mysqlsystemctl start mysqld.servicesystemctl enable mysqld.service初始化mysqlm ...
- centos6.5升级python3.6并安装boto3模块
1.先升级openssl yum安装各种依赖,yum install gcc gcc-c++ autoconf automake zlib zlib-devel pcre-devel tar zxvf ...
- php 图片加水印插件
问题:背景透明的水印图片,在加到原图上后不显示,待解决 <?php /** * 图片加水印(适用于png/jpg/gif格式) * * @author flynetcn * * @param $ ...
- dynamics 365/crm 导入解决方案报 发生 sql server 错误
dynamics 365/crm 导入解决方案报 发生 sql server 错误.{1}{0} 错误代码 80044150. 帮助我解决此问题. 这时候,可以检查数据库服务器的日志看看,可能会找到S ...
- disp
str = sprintf( 'Best Cross Validation MSE = %g Best c = %g Best g = %g',bestmse,bestc,bestg); disp(s ...
- Vue v-once指令 和 v-pre指令
v-once指令: 1.v-once 所在节点在初始化动态渲染后,就视为静态内容了 2.以后数据的改变不会引起v-once所在结构的更新,可用于优化性能 v-pre指令: 1.跳过其所在节点的编译过程 ...
- P1068 [NOIP2009 普及组] 分数线划定 题解
目录 题目 思路 code 题目 P1068 [NOIP2009 普及组 思路 算出人数 排序 输出 如果同分也输出 否则break code #include<bits/stdc++.h> ...
- Android studio学习笔记1
Android studio学习笔记1 20201303张奕博 2023.1.13 studio布局 1.线性布局 Android的线性布局不会换行,当组件一个挨着一个地排列到头之后,剩下的组件将不会 ...
- JavaScript异步概念及与c#异步的区别
JS的异步操作函数往往是通过回调函数来实现异步任务的结果处理,在ES6之前如setTimeout函数和异步AJAX编程: 在ES6规范后Promise 类对象使得书写异步任务更加容易,返回Promis ...