php怎么验证身份证号
-
要验证身份证号,可以使用正则表达式和计算公式来实现。下面是使用PHP验证身份证号的方法:
1. 使用正则表达式进行格式验证:
“`php
function validateIdCard($idCard){
// 18位身份证号码的正则表达式
$pattern = “/^\d{17}(\d|x|X)$/”;
if (!preg_match($pattern, $idCard)){
return false; // 格式不正确
}
return true; // 格式正确
}
“`以上代码使用正则表达式对传入的身份证号进行判断,符合18位身份证号码的格式则返回true,否则返回false。
2. 使用计算公式进行校验:
身份证号码的最后一位是校验位,根据前17位数字,可以通过一定的计算方法得到该位的值。下面是通过计算公式验证身份证号的方法:
“`php
function validateIdCard($idCard){
if (strlen($idCard) != 18){
return false; // 长度不正确
}
$arrChar = str_split($idCard); // 将字符串转为数组
$num = 0;
for ($i = 0; $i < 17; $i++){ $num += $arrChar[$i] * pow(2, 17 - $i) % 11; } $code = array("1", "0", "x", "9", "8", "7", "6", "5", "4", "3", "2"); if ($code[$num % 11] != strtolower($arrChar[17])){ return false; // 校验位不正确 } return true; // 身份证号码正确}```以上代码首先判断身份证号的长度是否为18位,然后遍历前17位数字,根据计算公式求得的结果与校验位进行比较,如果不相符则返回false,否则返回true。3. 调用验证方法:```php$idCard = "身份证号码";if (validateIdCard($idCard)){ echo "身份证号码验证通过";} else { echo "身份证号码验证失败";}```将要验证的身份证号码传入validateIdCard()方法进行验证,根据返回的结果输出验证结果。以上就是使用PHP验证身份证号的方法,通过正则表达式和计算公式可以判断身份证号码的格式和校验位是否正确。2年前 -
在PHP中,可以通过正则表达式来验证身份证号码的有效性。以下是一个示例代码:
“`php
“`使用这个函数,你可以验证一个身份证号码的有效性。如果身份证号码有效,返回 true,否则返回 false。
2年前 -
要验证身份证号的有效性,可以使用PHP编写一个函数来完成。下面是一个示例代码,演示了如何验证身份证号:
“`php
function validateIdCard($idCard)
{
// 身份证号码长度应为18位,最后一位可能是字母X
if (strlen($idCard) != 18)
{
return false;
}// 身份证号码只能由数字和字母X组成
if (!preg_match(‘/^[0-9]{17}[0-9X]$/’, $idCard))
{
return false;
}// 地区码校验
$provinceCode = substr($idCard, 0, 2);
if (!checkProvinceCode($provinceCode))
{
return false;
}// 日期校验
$birthDate = substr($idCard, 6, 8);
if (!checkBirthDate($birthDate))
{
return false;
}// 校验码校验
if (!checkCheckCode($idCard))
{
return false;
}return true;
}function checkProvinceCode($provinceCode)
{
// 自行定义省份地区码规则
$provinceCodes = 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 (!in_array($provinceCode, $provinceCodes))
{
return false;
}return true;
}function checkBirthDate($birthDate)
{
$year = substr($birthDate, 0, 4);
$month = substr($birthDate, 4, 2);
$day = substr($birthDate, 6, 2);if (!checkdate($month, $day, $year))
{
return false;
}return true;
}function checkCheckCode($idCard)
{
// 校验码计算方法,根据GB 11643-1999标准计算
$checkCodes = array(
‘1’, ‘0’, ‘X’, ‘9’, ‘8’, ‘7’, ‘6’, ‘5’, ‘4’, ‘3’, ‘2’,
);$checkSum = 0;
for ($i = 0; $i < 17; $i++) { $checkSum += intval($idCard[$i]) * pow(2, 17 - $i) % 11; } $checkCode = $checkCodes[$checkSum % 11]; if ($idCard[17] != $checkCode) { return false; } return true;}```以上代码中,`validateIdCard`函数接受一个身份证号码作为参数,返回一个布尔值,表示该身份证号码的有效性。具体的验证过程如下:1. 首先,检查身份证号码的长度,如果不为18位则直接返回false。2. 接下来,使用正则表达式判断身份证号码是否只包含数字和最后一位可能的字母X。3. 然后,根据自定义的地区码规则,检查身份证号码的前两位是否符合规定的地区码。4. 然后,校验身份证号码中的日期部分,检查是否为合法的日期。5. 最后,校验身份证号码的校验码是否正确。如果以上所有验证步骤均通过,则返回true表示身份证号码有效;否则返回false表示无效。2年前