php 验证港澳台身份证
时间:2021-09-04
本文章向大家介绍php 验证港澳台身份证,主要包括php 验证港澳台身份证使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
/**
* 验证其他身份证号,港澳台身份证
* @param $IDCard
* @return bool
*/
public static function checkOtherIDCard($IDCard)
{
$IDCard = strtoupper($IDCard);
$IDCard = str_replace(array('(', ')'), array('(', ')'), $IDCard);
preg_match('/^([A-Z])([\d]{6})\(([A\d])\)$/', $IDCard, $hongkong);//香港
if ($hongkong && count($hongkong) === 4) {
$sum = (ord($hongkong[1]) - 64) * 8;
$index = 7;
for ($j = 0; $j < 6; $j++) {
$sum += $hongkong[2]{$j} * $index;
$index--;
}
$get_num = $sum % 11;
if ($get_num === 1) {
$get_num = 'A';
} elseif ($get_num > 1) {
$get_num = 11 - $get_num;
}
if ($hongkong[3] === $get_num) {
return true;
}
return false;
}
preg_match('/^([A-Z])([\d]{9})$/', $IDCard, $taiwan);//中国台湾省
if ($taiwan && count($taiwan) === 3)//首位数字代表性别,男性为1、女性为2
{
$area_code = array('A' => 10, 'B' => 11, 'C' => 12, 'D' => 13, 'E' => 14, 'F' => 15, 'G' => 16, 'H' => 17, 'I' => 34, 'J' => 18, 'K' => 19, 'L' => 20, 'M' => 21, 'N' => 22, 'O' => 35, 'P' => 23, 'Q' => 24, 'R' => 25, 'S' => 26, 'T' => 27, 'U' => 28, 'V' => 29, 'W' => 32, 'X' => 30, 'Y' => 31, 'Z' => 33);
$code = $area_code[$taiwan[1]];
$sum = $code{0} + $code{1} * 9;
$index = 8;
for ($k = 1; $k < 8; $k++) {
$sum += $taiwan[2]{$k} * $index;
$index--;
}
$get_num = $sum % 10;
if ($get_num === $taiwan[2]{8}) {
return true;
}
return false;
}
preg_match('/^[157][\d]{6}\([\d]\)$/', $IDCard, $aomen);//澳门
if ($aomen) {
return true;
}
return false;
}
原文地址:https://www.cnblogs.com/jiqing9006/p/15225915.html
- 如何修改CDSW服务的DNS和HOSTNAME
- 想尝试搭建图像识别系统?这里有一份TensorFlow速成教程
- 如何查看集成Sentry后Hive作业的真实用户
- 如何在Impala中实现拉链表
- 多图见证模拟机器人的逆天成长:论进化策略在强化学习中的应用
- Hue禁止用户下载数据问题分析
- 如何在RedHat6上使用Bind搭建DNS服务
- 如何使用Cloudera Manager升级Spark2.1版本至Spark2.2
- Cloudera Manager分发Parcel异常分析
- 如何在Hue中配置Impala的负载均衡
- 35行代码实现千万级别字典的快速去重
- PIMS三个漏洞+里程密最新版V2.3 SQL注入漏洞
- 如何在Redhat7.3安装CDH5.14
- CDSW1.3的新功能
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- JavaWeb第二讲 重定向与转发 & doGet()与doPost()
- JavaWeb第一讲 Servlet的工作原理及生命周期
- 多系列数据核密度图
- leetcode树之二叉树的层平均值
- 大型项目技术栈第二讲 ES6(ECMAScript 6.0)的使用
- 大型项目技术栈第三讲 ztree的使用
- JavaWeb新手训练经典项目 & 半小时高效开发 & 海量知识点涵盖 = 从这里开始
- Java反射_笔记分享
- Java注解详细总结
- 文档驱动 —— 表单组件(六):基于AntDV的Form表单的封装,目标还是不写代码
- 这就是你日日夜夜想要的docker!!!---------Docker资源控制--Cgroup
- 2020-09-26:请问rust中的&和c++中的&有哪些区别?
- python在Keras中使用LSTM解决序列问题
- python使用MongoDB,Seaborn和Matplotlib文本分析和可视化API数据
- 用于NLP的Python:使用Keras进行深度学习文本生成