内容转自:PHP中一些常用证件的验证方法

<?php/*** 来往港澳通行证:* 1.W,C+8位数字* 2.7位数字*/
function gapassport_verify($content)
{$pattern = "/^\d{7}$|^[W|C]\d{8}$/";if (!preg_match($pattern, $content)) {return false;}return true;
}/*** 身份证校验代码*/
function idCardVerify($id_card)
{if (strlen($id_card) == 18) {return idcard_checksum18($id_card);} elseif ((strlen($id_card) == 15)) {$id_card = idcard_15to18($id_card);return idcard_checksum18($id_card);} else {return false;}
}// 计算身份证校验码,根据国家标准GB 11643-1999
function idcard_verify_number($idcard_base)
{if (strlen($idcard_base) != 17) {return false;}// 加权因子$factor = array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);// 校验码对应值$verify_number_list = array('1','0','X','9','8','7','6','5','4','3','2');$checksum = 0;for ($i = 0; $i < strlen($idcard_base); $i++) {$checksum += substr($idcard_base, $i, 1) * $factor[$i];}$mod = $checksum % 11;$verify_number = $verify_number_list[$mod];return $verify_number;
}// 将15位身份证升级到18位
function idcard_15to18($idcard)
{if (strlen($idcard) != 15) {return false;} else {// 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码if (array_search(substr($idcard, 12, 3), array('996','997','998','999')) !== false) {$idcard = substr($idcard, 0, 6) . '18' . substr($idcard, 6, 9);} else {$idcard = substr($idcard, 0, 6) . '19' . substr($idcard, 6, 9);}}$idcard = $idcard . idcard_verify_number($idcard);return $idcard;
}/*** 18位身份证校验码有效性检查*/
function idcard_checksum18($idcard)
{if (strlen($idcard) != 18) {return false;}$aCity = 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 (!array_key_exists(substr($idcard, 0, 2), $aCity)) {return false;}//验证生日if (!checkdate(substr($idcard, 10, 2), substr($idcard, 12, 2), substr($idcard, 6, 4))) {return false;}$idcard_base = substr($idcard, 0, 17);if (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))) {return false;} else {return true;}
}/*** 国内护照* 1.G|E+8位数字:如:G12345678* 2.D|S|P+7位数字:如:D1234567*/
function passportVerify($content)
{$pattern = "/^[\w]{5,17}$/";return preg_match($pattern, $content);
}/*** 台胞证:* 1、8位数字,如:12345678* 2、10位数字+(1位英文字母),如:1234567890(T)*/
function taibaoVerify($content)
{$pattern_one = "/^[\d]{8}$/";$pattern_two = "/^[\d]{10}[(|(][a-zA-z][)|)]$/iu";return (preg_match($pattern_one, $content) || preg_match($pattern_two, $content));
}/*** 赴台证:* 1.T+8位数字* 2.25+7位数字*/
function twpassport_verify($content)
{$pattern = "/^25\d{7}$|^T\d{8}$/";if (!preg_match($pattern, $content)) {return false;}return true;
}/*** 军官证* X字+8位,如:南字12345678*/
function junguanVerify($content)
{if (mb_strlen($content) != 10) {return false;}$check = preg_match("/^[\x{4e00}-\x{9fa5}]{1}\x{5b57}$/u", mb_substr($content, 0, 2));if ($check && preg_match("/^\d{8}$/u", mb_substr($content, 2, 8))) {return true;}return false;
}

PHP中一些常用证件的验证方法相关推荐

  1. 作为SLAM中最常用的闭环检测方法,视觉词袋模型技术详解来了

    摘自:https://mp.weixin.qq.com/s/OZnnuA31tEaVt0vnDOy5hQ 作为SLAM中最常用的闭环检测方法,视觉词袋模型技术详解来了 原创 小翼 飞思实验室 今天 基 ...

  2. 深度盘点:详细介绍机器学习中的7种交叉验证方法!

    来源:机器学习社区 本文约3400字,建议阅读10分钟 本文与你分享7种最常用的交叉验证技术及其优缺点,提供了每种技术的代码片段. 在任何有监督机器学习项目的模型构建阶段,我们训练模型的目的是从标记的 ...

  3. 【机器学习】深度盘点:详细介绍 Python 中的 7 种交叉验证方法!

    在任何有监督机器学习项目的模型构建阶段,我们训练模型的目的是从标记的示例中学习所有权重和偏差的最佳值. 如果我们使用相同的标记示例来测试我们的模型,那么这将是一个方法论错误,因为一个只会重复刚刚看到的 ...

  4. 真香啊,机器学习中这3种交叉验证方法要掌握

    交叉验证是机器学习中常用的一种策略,其核心是对数据集进行划分,本文介绍sklearn中的3种交叉验证时划分数据集的方法: KFold StratifiedKFold GroupKFold 这里来举例说 ...

  5. 常用的Regex验证方法

    以下是我写的几个验证方法  1  /// <summary>  2       /// 是否数字  3       /// </summary>  4       /// &l ...

  6. laravel中及其常用的一些函数方法(自己看)和技巧(不断添加中)

    手册:https://laravelacademy.org/ 1.中间件的定义Middleware 2.路由的定义和写法 3.控制器Controller之Request 4.控制器Controller ...

  7. js 中继承常用的几种方法

    继承 继承: 就是指 一个对象 有权 去访问 另一个对象的成员属性 作用是实现代码的复用 继承的方式:只要能实现一个对象 有权访问另一个对象成员 的 方式 都可以成为是 实现继承的方式 3 .继承是对 ...

  8. 3D中的常用材质的调整方法

    一.木纹材质调整方法 1. 木纹材质的肌理调整: A.使用过度色通道贴图后加入凹凸通道贴图,使木纹有凹凸感,肌理更明显凹凸通道强度通常为30% B.材质球的高光强度(specular level:)通 ...

  9. unittest Module中的常用6种断言方法

    unittest Module中的断言方法 方法 作用 assertEqual(a,b) 核实 a ==b assertNotEqual(a,b) 核实 a !=b assertTrue(x) 核实x ...

最新文章

  1. 有哪些工具、技巧和方法极大地提高了远程工作效率?
  2. HBase解决Region Server Compact过程占用大量网络出口带宽的问题
  3. 2020年春天故事之巧遇史上最奇葩SAP用户
  4. ADS1.2安装要点
  5. 微信验证以及登录流程
  6. 浅谈Java中类加载机制
  7. Linux驱动(9)--注册设备
  8. 大热的麦克风阵列语音识别系统的设计和轻松实现,提供软硬件解决方案
  9. 语音包mp3_目标明确,为运动而造 ,自带MP3功能的南卡RUNNER PRO骨传导耳机
  10. 解析json对象出现$ref: $.list[0]的解决办法
  11. 免费的录屏软件,来试试这一款软件吧!
  12. [python爬虫] Selenium爬取新浪微博内容及用户信息
  13. DISC职业性格测试附完整分析.doc
  14. 为JBoot系统增加启动任务
  15. 第十二届全国大学生信息安全竞赛-RE部分WP(目前前两题,待更)
  16. 提高团队合作的六个方法
  17. iOS-键盘弹出的类型
  18. python wifi密码字典
  19. 一篇优秀的硕士毕业论文是怎么写成的
  20. 【09】FreeRTOS的时间片调度

热门文章

  1. 常见的 CSRF、XSS、sql注入、DDOS流量攻击
  2. 日常记账,分类给收入和支出着不同颜色
  3. 可喜可贺,又一ThinkPHP 5.1开源多用户商城系统上架了商家客户端
  4. 六星教育php课程体系图,六星教育的PHP课程需要经历哪几个阶段?每个阶段的标准是什么?...
  5. SIM800C通讯模块调试(一)
  6. 【sass】安装及入门教程
  7. NBT | gutSMASH预测人类肠道微生物的专门初级代谢途径
  8. 学计算机但物理数学不太好,高考志愿指南:这4个专业难学到怀疑人生,数学不好的学生慎选...
  9. Java模拟器1.5.5,怀旧向/Smart Tools,15种工具集合等
  10. 文件夹变成计算机程序,文件夹变成exe快速解决方法