您的位置:

php身份证号规则验证,php身份证简易验证

本文目录一览:

php 身份证的正则表达式怎么写?

$IdCard = "/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/i";

提示 :正则格式: ‘/正则表达式/模式修正符’;

所以 添加 i 是忽略英文字母大小写的

php的怎么用身份证号来做帐号判断代码

写了几个身份证方面的函数,个人感觉挺有用的,特别是在网络问卷调查时,对个人信息里的身份证进行验证很有用,但是应者寥寥,还是收在自己的blog里算了。

<?php

// 计算身份证校验码,根据国家标准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;

 }

}

?>

其中的$idcard_base是指身份证中的本位码,本位码是18位身份证里才有的,也就是18位身份证的前17位,最后一位称为校验码

一般在使用的时候不用直接调用idcard_verify_number(),平时的应用大多是使用后两个函数,这些函数都没有关心身份证字符串的格式问题,在调用前自行进行格式检查。

验证身份证号码的正确正则表达式

验证身份证号码的正确正则表达式 /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/

function isCardNo(card) 

{

// 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X 

var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;

if(reg.test(card) === false)

{

alert("身份证输入不合法");

return  false;

扩展资料:

正则表达式的书写语法

1、^  表示匹配字符串的开始位置  (例外  用在中括号中[ ] 时,可以理解为取反,表示不匹配括号中字符串)

2、$  表示匹配字符串的结束位置

3、*  表示匹配 零次到多次

4、+  表示匹配 一次到多次 (至少有一次)

5、?  表示匹配零次或一次

6、.  表示匹配单个字符

7、|  表示为或者,两项中取一项

8、(  ) 小括号表示匹配括号中全部字符

9、[  ] 中括号表示匹配括号中一个字符 范围描述 如[0-9 a-z A-Z]

10、{  } 大括号用于限定匹配次数  如 {n}表示匹配n个字符  {n,}表示至少匹配n个字符  {n,m}表示至少n,最多m

11、\  转义字符 如上基本符号匹配都需要转义字符   如 \*  表示匹配*号

12、\w 表示英文字母和数字  \W  非字母和数字

13、\d  表示数字   \D  非数字

参考链接来源:百度百科-正则表达式

PHP 做的后台,如何“实名验证”

实名认证牵涉公安备案系统,请想公安机关申请接口进行验证。

否则只能用身份证生成规则进行验证,但是这样验证不是百分之百准确的

以下附上PHP 身份证规则验证代码

/*/

# CopyRight: zxing

# Document: 检查符合 GB11643-1999 标准的身份证号码的正确性

# File:gb11643_1999.func.php Fri Mar 28 09:42:41 CST 2008 zxing

# Updated:Fri Mar 28 09:42:41 CST 2008

# Note: 调用函数 check_id();

#/*///

$id =array();

$id[] = '370882198601064774';

$id[] = '420502198611281126';

$id[] = '370882198601064770';

$id[] = '370882860106477';

$id[] = '63212519850703214x';

$id[] = '429021198203221006';

$id[] = '429036198203211023';

foreach ($id as $key = $value){

echo check_id($value)?$value.' 是真的!br/': $value.' 是假的!br/';

}

#/*/

/*/

# 函数功能:计算身份证号码中的检校码

# 函数名称:idcard_verify_number

# 参数表 :string $idcard_base 身份证号码的前十七位

# 返回值 :string 检校码

# 更新时间:Fri Mar 28 09:50:19 CST 2008

/*/

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); //debug 加权因子

    $verify_number_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); //debug 校验码对应值

    $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位

# 函数名称:idcard_15to18

# 参数表 :string $idcard 十五位身份证号码

# 返回值 :string

# 更新时间:Fri Mar 28 09:49:13 CST 2008

/*/

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位身份证校验码有效性检查

# 函数名称:idcard_checksum18

# 参数表 :string $idcard 十八位身份证号码

# 返回值 :bool

# 更新时间:Fri Mar 28 09:48:36 CST 2008

/*/

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;

    }

}

/*/

# 函数功能:身份证号码检查接口函数

# 函数名称:check_id

# 参数表 :string $idcard 身份证号码

# 返回值 :bool 是否正确

# 更新时间:Fri Mar 28 09:47:43 CST 2008

/*/

function check_id($idcard) {

if(strlen($idcard) == 15 || strlen($idcard) == 18){

   if(strlen($idcard) == 15){

    $idcard = idcard_15to18($idcard);

   }

   if(idcard_checksum18($idcard)){

    return true;

   }else{

    return false;

   }

}else{

   return false;

}

}

php 检查字符串中是否存在身份证号

15位数身份证验证正则表达式:

$sfzh=preg_match(“/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/

”,"字符串");

$sfzh=preg_match(“/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/”,"字符串");

PHP正则表达式验证身份证号格式是否正确

//身份证正则表达式(15位)

$isIDCard1="/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/";

//身份证正则表达式(18位)

$isIDCard2="/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$/";

只给出规则,函数自己写