用PHP实现以下功能使用数组、表单、字符串处理函数等实现功能: 1.输入身份证号码并获取身份证号码 2.判断身份证是否合法 2.1判断身份证位数是否是18位或是15位,否则不是合法身份证,重新输入 2.2判断身份证出身年月日是否合法 2.3判断省份位是否合法 3.获得身份证所属省份,出生年月日和性别信息。
时间: 2023-05-25 17:06:05 浏览: 107
个人使用PHP的各种字符串数组处理函数
<form action="" method="post">
<label>请输入身份证号码:</label>
<input type="text" name="idcard" id="idcard">
<input type="submit" value="验证">
</form>
<?php
if(isset($_POST['idcard'])){
$idcard = $_POST['idcard'];
if(strlen($idcard)==18 || strlen($idcard)==15){
//身份证位数合法
if(strlen($idcard)==18){
//18位身份证校验
$idcard_arr = str_split($idcard);
$idcard_sum = 0;
for($i=0;$i<=16;$i++){
$idcard_sum += $idcard_arr[$i]*(pow(2,17-$i)%11);
}
$idcard_sum %= 11;
$check_code_arr = array('1','0','x','9','8','7','6','5','4','3','2');
$check_code = $check_code_arr[$idcard_sum];
if($idcard_arr[17]!=$check_code){
echo "身份证号码不合法!";
exit;
}
}
//身份证号码合法
$province = substr($idcard,0,2);
$birthday = '';
$gender = '';
if(strlen($idcard)==18){
$birthday = substr($idcard,6,8);
$gender = $idcard_arr[16]%2==0?"女":"男";
}else{
$birthday = substr($idcard,6,6);
$gender = $idcard_arr[14]%2==0?"女":"男";
}
$province_arr = 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'=>'澳门特别行政区'
);
if(!isset($province_arr[$province])){
echo "身份证号码不合法!";
exit;
}else{
echo "身份证所属省份:".$province_arr[$province]."<br>";
echo "身份证出生年月日:".substr($birthday,0,4)."年".substr($birthday,4,2)."月".substr($birthday,6,2)."日<br>";
echo "身份证性别:".$gender;
}
}else{
echo "身份证号码不合法!";
}
}
?>
阅读全文