本文目录一览:
- php 身份证的正则表达式怎么写?
- php的怎么用身份证号来做帐号判断代码
- 验证身份证号码的正确正则表达式
- PHP 做的后台,如何“实名验证”
- 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;
}
}
扩展资料:正则表达式的书写语法
^
表示匹配字符串的开始位置 (例外 用在中括号中[ ]
时,可以理解为取反,表示不匹配括号中字符串)$
表示匹配字符串的结束位置*
表示匹配 零次到多次+
表示匹配 一次到多次 (至少有一次)?
表示匹配零次或一次.
表示匹配单个字符|
表示为或者,两项中取一项( )
小括号表示匹配括号中全部字符[ ]
中括号表示匹配括号中一个字符 范围描述 如[0-9 a-z A-Z]
{ }
大括号用于限定匹配次数 如{n}
表示匹配n个字符{n,}
表示至少匹配n个字符{n,m}
表示至少n,最多m\
转义字符 如上基本符号匹配都需要转义字符 如\*
表示匹配*
号\w
表示英文字母和数字\W
非字母和数字\d
表示数字\D
非数字 参考链接来源:百度百科 - 正则表达式
PHP 做的后台,如何“实名验证”
实名认证牵涉公安备案系统,请向公安机关申请接口进行验证。 否则只能用身份证生成规则进行验证,但是这样验证不是百分之百准确的。 以下附上PHP 身份证规则验证代码:
<?php
// CopyRight: zxing
// Document: 检查符合 GB11643-1999 标准的身份证号码的正确性
// File: gb11643_1999.func.php
// 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); // 加权因子
$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位
// 函数名称: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}$/", "字符串");
18位数身份证验证正则表达式:
$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}$/";
只给出规则,函数自己写。