您的位置:首页 > 编程语言 > PHP开发

php验证身份证号码正确性

2013-12-03 21:08 309 查看
发布:JB01 来源:脚本学堂 【大 中 小】分享一例php代码,用于验证身份证号码的正确性,用到了preg_match、preg_replace函数,有需要的朋友可以参考学习下。本文转自:http://www.jbxue.com/article/14156.html本节内容:验证身份证号码正确性的php代码

例子:

复制代码代码示例:<?php
/**
* 验证身份证号
* by www.jbxue.com
* @param $vStr
* @return bool
*/
function isCreditNo($vStr)
{
$vCity = array(
'11','12','13','14','15','21','22',
'23','31','32','33','34','35','36',
'37','41','42','43','44','45','46',
'50','51','52','53','54','61','62',
'63','64','65','71','81','82','91'
);

if (!preg_match('/^([\d]{17}[xX\d]|[\d]{15})$/', $vStr)) return false;

if (!in_array(substr($vStr, 0, 2), $vCity)) return false;

$vStr = preg_replace('/[xX]$/i', 'a', $vStr);
$vLength = strlen($vStr);

if ($vLength == 18)
{
$vBirthday = substr($vStr, 6, 4) . '-' . substr($vStr, 10, 2) . '-' . substr($vStr, 12, 2);
} else {
$vBirthday = '19' . substr($vStr, 6, 2) . '-' . substr($vStr, 8, 2) . '-' . substr($vStr, 10, 2);
}

if (date('Y-m-d', strtotime($vBirthday)) != $vBirthday) return false;
if ($vLength == 18)
{
$vSum = 0;

for ($i = 17 ; $i >= 0 ; $i--)
{ // www.jbxue.com
$vSubStr = substr($vStr, 17 - $i, 1);
$vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr , 11));
}

if($vSum % 11 != 1) return false;
}

return true;
}

您可能感兴趣的文章:
JS验证身份证有效性的实例代码
asp.net 验证身份证号码的代码一例
C#身份证验证的代码一例
PHP身份证正则验证(兼容15,18位身份证)代码一例
用于身份证验证的不错的js脚本
实现身份证号码验证的js代码
身份证号码验证的正则表达式实例
js 验证身份证号码的代码(附实例、下载地址)
验证身份证号码的js代码(功能强大 非常好用)
验证身份证号码的js代码(完美支持15与18位身份证)
js 身份证号码验证代码(非常好用,支持15 18位)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: