用PHP写要求如下使用数组、表单、字符串处理函数等实现功能: 1.输入身份证号码并获取身份证号码 2.判断身份证是否合法 2.1判断身份证位数是否是18位或是15位,否则不是合法身份证,重新输入 2.2判断身份证出身年月日是否合法 2.3判断省份位是否合法 3.获得身份证所属省份,出生年月日和性别信息。
时间: 2023-05-24 10:06:58 浏览: 169
<?php
if(isset($_POST['submit'])) {
$idcard=$_POST['ID']; //获取身份证号码
$idcardLength=strlen($idcard); //身份证号码长度
if($idcardLength==18||$idcardLength==15) { //判断身份证位数是不是18位或15位
if($idcardLength==18) {
// 18位身份证号码检查
if(!preg_match('/^[0-9]{17}[0-9Xx]$/', $idcard)) {
echo '身份证号码格式错误';
} else {
$year=intval(substr($idcard,6,4));
$month=intval(substr($idcard,10,2));
$day=intval(substr($idcard,12,2));
if(checkdate($month,$day,$year)!=true) { //验证出生日期是否合法
echo '出生日期非法';
} else {
$areaNum=intval(substr($idcard,0,2)); //提取省份位数
$provinces=array(
array(11,'北京'),array(12,'天津'),array(13,'河北'),array(14,'山西'),
array(15,'内蒙古'),array(21,'辽宁'),array(22,'吉林'),array(23,'黑龙江'),
array(31,'上海'),array(32,'江苏'),array(33,'浙江'),array(34,'安徽'),
array(35,'福建'),array(36,'江西'),array(37,'山东'),array(41,'河南'),
array(42,'湖北'),array(43,'湖南'),array(44,'广东'),array(45,'广西'),
array(46,'海南'),array(50,'重庆'),array(51,'四川'),array(52,'贵州'),
array(53,'云南'),array(54,'西藏'),array(61,'陕西'),array(62,'甘肃'),
array(63,'青海'),array(64,'宁夏'),array(65,'新疆'),array(71,'台湾'),
array(81,'香港'),array(82,'澳门'),array(91,'国外')
); //创建二位数组 $provinces用来匹配省份名称
$isAreaNumExist=false; //用于判断省份码是否合法
foreach ($provinces as $element) {
if ($element[0]==$areaNum) {
$province=$element[1];//省份名称
$isAreaNumExist=true;
break;
}
}
if($isAreaNumExist==false) {
echo '非法省份';
} else {
$birthday=substr($idcard,6,8);
echo '省份:'.$province.'<br>';
echo '出生日期:'.$birthday.'<br>';
$sexNum=intval(substr($idcard,16,1)); //提取性别码
if($sexNum%2==0) {
$sex='女';
} else {
$sex='男';
}
echo '性别:'.$sex;
}
}
}
} else {
echo '15位身份证号码不支持验证';
}
} else {
echo '身份证号码位数不正确';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>验证身份证号码</title>
</head>
<body>
<form method='post' action=''>
<p>请输入身份证号码:<input type='text' name='ID'></p>
<input type='submit' name='submit' value='验证'>
</form>
</body>
</html>
阅读全文