php 验证姓名、手机号和身份证是否符合

34次阅读
没有评论
function isIdCard($number) {
    //加权因子 
    $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
    //校验码串 
    $ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
    //按顺序循环处理前17位 
    for ($i = 0;$i < 17;$i++) { 
        //提取前17位的其中一位,并将变量类型转为实数 
        $b = (int) $number{$i}; 
 
        //提取相应的加权因子 
        $w = $wi[$i]; 
 
        //把从身份证号码中提取的一位数字和加权因子相乘,并累加 
        $sigma += $b * $w; 
    }
    //计算序号 
    $snumber = $sigma % 11; 
 
    //按照序号从校验码串中提取相应的字符。 
    $check_number = $ai[$snumber];
 
    if ($number{17} == $check_number) {
        return true;
    } else {
        return false;
    }
}
function isChineseName($name){
	if (preg_match('/^([\xe4-\xe9][\x80-\xbf]{2}){2,6}$/', $name)) {
		return true;
	} else {
		return false;
	}
}

使用

if (!isChineseName($name)) {
	$error="姓名验证不通过,请检查输入是否正确";
  $url = "http://******.com/error.php?error=".$error;  
	echo "<script type='text/javascript'>";  
	echo "window.location.href='$url'";  
	echo "</script>"; 
  exit();
} else {
	//echo "中文名字";
}
$preg_phone='/^1[34578]\d{9}$/ims';//检查手机号码
if(preg_match($preg_phone,$dianhua)){
//echo "号码正确";
} else {
	
  	$error="手机号码验证不通过,请检查输入是否正确";
  $url = "http://******.com/error.php?error=".$error;  
	echo "<script type='text/javascript'>";  
	echo "window.location.href='$url'";  
	echo "</script>"; 
    exit();
}
//检查身份证
if (!isIdCard($sfzid)) {
  $error="身份证号码验证不通过,请检查输入是否正确";
  $url = "http://******.com/error.php?error=".$error;  
	echo "<script type='text/javascript'>";  
	echo "window.location.href='$url'";  
	echo "</script>"; 
    exit();
} else {
//	echo "身份证号码正确";
}
正文完