php——验证身份证是否合法的函数

function is_idcard( $id ){
$id = strtoupper($id);
$regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/";
$arr_split = array();
if(!preg_match($regx, $id))
{
return FALSE;
}
if(15==strlen($id)) //检查15位
{
$regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/";
@preg_match($regx, $id, $arr_split);
//检查生日日期是否正确
$dtm_birth = "19".$arr_split[2] . ‘/‘ . $arr_split[3]. ‘/‘ .$arr_split[4];
if(!strtotime($dtm_birth))
{
return FALSE;
}
else
{
return TRUE;
}
}
else //检查18位
{
$regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/";
@preg_match($regx, $id, $arr_split);
$dtm_birth = $arr_split[2] . ‘/‘ . $arr_split[3]. ‘/‘ .$arr_split[4];
if(!strtotime($dtm_birth)) //检查生日日期是否正确
{
return FALSE;
}
else
{
//检验18位身份证的校验码是否正确。
//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
$arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
$arr_ch = array(‘1‘, ‘0‘, ‘X‘, ‘9‘, ‘8‘, ‘7‘, ‘6‘, ‘5‘, ‘4‘, ‘3‘, ‘2‘);
$sign = 0;
for ( $i = 0; $i < 17; $i++ )
{
$b = (int) $id{$i};
$w = $arr_int[$i];
$sign += $b * $w;
}
$n = $sign % 11;
$val_num = $arr_ch[$n];
if ($val_num != substr($id,17, 1))
{
return FALSE;
}
else
{
return TRUE;
}
}
}
}

时间: 2024-08-03 08:13:48

php——验证身份证是否合法的函数的相关文章

C# 验证身份证是否合法的函数

主要是验证身份证的开头和身份证的格式和长度是否正确,没有按照身份证的编码规则进行严格验证 /// <summary> /// 验证身份证是否合法 /// </summary> /// <param name="idCard">要验证的身份证</param> public static bool IsIdCard(string idCard) { //如果为空,认为验证合格 if (IsNullOrEmpty(idCard)) { retu

验证身份证函数

<? //php验证身份证合法性 // 计算身份证校验码,根据国家标准GB 11643-1999 class Util{ static 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); // 校验码对应值

SQL Server 验证身份证合法性函数(使用VBScript.RegExp)

原文:SQL Server 验证身份证合法性函数(使用VBScript.RegExp) 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wzy0623/article/details/53895680 -- 建立正则表达式测试函数 CREATE FUNCTION dbo.RegExpTest ( @source VARCHAR(5000), --需要匹配的源字符串 @regexp VARCHAR(1000), --正则表达式 @ignorecas

php自带验证邮箱 url ip函数

以前用PHP验证邮箱.URL.IP是否合法都是通过自己写正则来实现,但是有时候脑子发昏,可能会写出一个不是完全正确的正则,导致验证出错,今天发现原来PHP本身自带了验证邮箱.URL.IP是否合法的函数. 主要使用的是filter_var函数. 语法 filter_var(variable, filter, options) 参数 描述 variable 必需.规定要过滤的变量. filter 可选.规定要使用的过滤器的 ID. options 规定包含标志/选项的数组.检查每个过滤器可能的标志和

锋利的js之验证身份证号

我们在做互联网网站时,注册个人资料时,经常要用到身份证号,我们需要对身份证进验证,不然别人随便输个号码就通过,让你感觉这个网站做得很shit. 身份证号是有规则的. 结构和形式 1.号码的结构  公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码.  2.地址码  表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行.  3.出生日期码  表示编码对象出生的年.月

php验证身份证号码的正确性

/********************php验证身份证号码是否正确函数*********************/function is_idcard( $id ) {   $id = strtoupper($id);   $regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/";   $arr_split = array();   if(!preg_match($regx, $id))   {     return FALSE;   }   if(15

验证身份证是否合法

验证输入的身份证号码是否合法 下面的验证没有包含对月份和日期的验证,我测试了几个,对校验码验证正确了,就是正确的,是否还需要验证月份和日期,这个还有待更多号码的测试 package com.gj.idcardverify; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Gre

JAVA代码验证身份证信息

java验证身份证信息代码 转自:http://www.blogjava.net/xylz/archive/2011/01/05/342330.html import java.util.Calendar; import java.util.HashMap; import java.util.Map; /** /** * 身份证号码验证 * 1.号码的结构 * 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码, * 八位数字出生日期码,三位数字

EXCEL规范数据输入教程-验证身份证号

EXCEL日常工作中经常会输入身份证号码,一不小心就可能出错,今天大飞老师就分享这样一个示例EXCEL规范数据输入教程-验证身份证号. 我们首先要保证在EXCEL中能正确输入身份证号码(PS:身份证号18位,直接输入就会变成科学计数法形式1.235E+17),可以通过两种方式.方式一:单引号+身份证号码如:'123456789111111111,方式二:先改变单元格类型为文本格式,然后再输入身份证号码. 我们要学习一个EXCEL函数LEN,可以返回字符的个数,我们填写一个身份证号码,通过LEN可