号结构: 要验证号号码 php,首先必须了解号的编码规则. 中国的号主要由几位数字或数字和字母的混合组成.

早期ID卡由15位数字组成. 这主要是1980年以前发行的. 后来考虑了千年虫的问题,因为15位的号只能是1900年1月1日至1999年之间的数字. 12月31日出生的人的数量,因此添加了18位ID编号规则.

1>. 18位ID号的含义:

省,自治区和直辖市代码的1-2位数字;

3位数的地级城市,联盟和自治州代码;

5-6位数字的县,县级市,区号;

7-14个出生日期,例如19820426代表1982年4月26日;

15-17位数字是序列号,其中17位(倒数第二位)对于男性甚至对于女性都是单数;

18位数字是校验码,0-9和X.

2>. 15位ID编号的含义:

省,自治区和直辖市代码的1-2位数字;

3位数的地级城市,联盟和自治州代码;

5-6位数字的县,县级市,区号;

7到12位数字的出生日期,例如670401,代表1967年4月1日,是18位数字的第一个差异;

13-15位数字是序列号,其中15位对于男性甚至对于女性都是单数;

备注:

作为尾号的校验码是通过将前17位数字统一为一个公式来计算的. 计算结果为0-10. 如果某人的尾号为0-9,则不会显示X,但是如果某人的尾号为10,则必须使用X. X是罗马数字10,使用X而不是10. 15位数字和18位数字之间的差,再加上2年和1个识别码,则除去出生年份和月份的前2位数字,而无需最后一位的验证码,其余为15位ID号;

3>. 这只是按地区划分,与每个地方的经济状况无关.

第一个前缀是“华北”,北京11,天津12,河北13,山西14,内蒙古15

前缀“ 2”是“东北区”,这意味着中国东北的三个省都有Ang. 辽宁21,吉林22,黑龙江23

三个前缀是“华东”六省一市,上海31,江苏32,浙江33,安徽34,福建35,江西36,山东37

前缀4是“中部+华南”,河南41,湖北42,湖南43,广东44,广西45,海南46

前缀5是“西南地区”,重庆50,四川51,贵州52,云南53号码 php,西藏54. 为什么重庆的代码不是50,所以请参阅我的其他答案. (中国的系统于1984年在全国范围内实施. 这四个城市和其他三个城市是在49年成立时成立的,但重庆仅在1997年升格为直辖市. 设置了的区号1984年,当时的城市代码通常排在每个地区的前列,例如华北,北京为11,天津为12,华东和上海为31. 应将其与重庆的省同等对待. 号码不能再像四川那样为51,但必须将中央直辖市置于地区代码的最前面,因此将重庆代码设置为50.

所以当我去看重庆人家中保存的旧时,它们都是以51开始的.

前六个字符是“西北地区”,陕西61,甘肃62,青海63,宁夏64,新疆65

前缀7是中华民国的实际控制区域,这就是我们所说的台湾台湾71

前缀8是香港特别行政区,香港81,澳门82

前缀9用于海外地区,在海外91

class Idcard

{

public $aWeight = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]; //十七位数字本体码权重

public $aValidate = ['1','0','X','9','8','7','6','5','4','3','2']; //mod11,对应校验码字符值

public $birthday;//出生年月

public $sex;//性别

public $xingzuo;//星座

public $shuxiang;//属相

public function __construct(){}

/**

* 验证出生日期

*/

public function isChinaIDCardDate($iY, $iM, $iD)

{

$iDate = $iY . '-' . $iM . '-' . $iD;

$rPattern = '/^(([0-9]{2})|(19[0-9]{2})|(20[0-9]{2}))-((0[1-9]{1})|(1[012]{1}))-((0[1-9]{1})|(1[0-9]{1})|(2[0-9]{1})|3[01]{1})$/';

if(preg_match($rPattern, $iDate, $arr)){

$this->birthday = $iDate;

return true;

}

return false;

}

/**

* 根据号前17位, 算出识别码

*/

public function getValidateCode($id)

{

$id17 = substr($id,0,17);

$sum = 0;

$len = strlen($id17);

for ($i=0; $i

$sum += $id17[$i] * $this->aWeight[$i];

}

$mode = $sum % 11;

return $this->aValidate[$mode];

}

/**

* 验证号

*/

public function isChinaIDCard($id)

{

if(!$this->get_shenfen($id)){

return false;

}

$len = strlen($id);

if($len == 18){

if (!$this->isChinaIDCardDate(substr($id,6,4), substr($id,10,2), substr($id,12,2))){

return false;

}

$code = $this->getValidateCode($id);

if (strtoupper($code) == substr($id,17,1)){

return true;

}

return false;

}

else if($len == 15)

{

if(!$this->isChinaIDCardDate('19'.substr($id,6,2),substr($id,8,2),substr($id,10,2))){

return false;

}

if(!is_numeric($id)){

return false;

}

return true;

}

return false;

}

/**

* 根据号,自动返回对应的性别

*/

public function getChinaIDCardSex($cid)

{

$sexint = (int)substr($cid,16,1);

return $sexint % 2 === 0 ? '女' : '男';

}

/**

* 根据号,自动返回对应的星座

*/

public function getChinaIDCardXZ($cid)

{

$bir = substr($cid,10,4);

$month = (int)substr($bir,0,2);

$day = (int)substr($bir,2);

$strValue = '';

if(($month == 1 && $day <= 21) || ($month == 2 && $day <= 19)) {

$strValue = "水瓶座";

}else if(($month == 2 && $day > 20) || ($month == 3 && $day <= 20)) {

$strValue = "双鱼座";

}else if (($month == 3 && $day > 20) || ($month == 4 && $day <= 20)) {

$strValue = "白羊座";

}else if (($month == 4 && $day > 20) || ($month == 5 && $day <= 21)) {

$strValue = "金牛座";

}else if (($month == 5 && $day > 21) || ($month == 6 && $day <= 21)) {

$strValue = "双子座";

}else if (($month == 6 && $day > 21) || ($month == 7 && $day <= 22)) {

$strValue = "巨蟹座";

}else if (($month == 7 && $day > 22) || ($month == 8 && $day <= 23)) {

$strValue = "狮子座";

}else if (($month == 8 && $day > 23) || ($month == 9 && $day <= 23)) {

$strValue = "座";

}else if (($month == 9 && $day > 23) || ($month == 10 && $day <= 23)) {

$strValue = "天秤座";

}else if (($month == 10 && $day > 23) || ($month == 11 && $day <= 22)) {

$strValue = "天蝎座";

}else if (($month == 11 && $day > 22) || ($month == 12 && $day <= 21)) {

$strValue = "射手座";

}else if (($month == 12 && $day > 21) || ($month == 1 && $day <= 20)) {

$strValue = "魔羯座";

}

return $strValue;

}

/**

* 根据号,自动返回对应的生肖

*/

public function getChinaIDCardSX($cid)

{

$start = 1901;

$end = $end = (int)substr($cid,6,4);

$x = ($start - $end) % 12;

$value = "";

if($x == 1 || $x == -11){$value = "鼠";}

if($x == 0) {$value = "牛";}

if($x == 11 || $x == -1){$value = "虎";}

if($x == 10 || $x == -2){$value = "兔";}

if($x == 9 || $x == -3){$value = "龙";}

if($x == 8 || $x == -4){$value = "蛇";}

if($x == 7 || $x == -5){$value = "马";}

if($x == 6 || $x == -6){$value = "羊";}

if($x == 5 || $x == -7){$value = "猴";}

if($x == 4 || $x == -8){$value = "鸡";}

if($x == 3 || $x == -9){$value = "狗";}

if($x == 2 || $x == -10){$value = "猪";}

return $value;

}

/**

* 根据号,自动返回对应的省、自治区、直辖市代

*/

public function get_shenfen($id){

$index = substr($id,0,2);

$area = 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 => "国外"

);

return $area[$index];

}

}

作者: 阿里森林|博客地址

此作品采用“抄送协议”,转载时必须注明作者和本文的链接

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-203548-1.html

php完全匹配,PHP完全匹配验证相关推荐

  1. vac服务器未响应,win7玩csgo官方匹配提示vac无法验证您的游戏会话怎么办

    csgo是v社继cs起源后的正统续作,可是最近有很多国服和国际服的win7 64位系统的用户都遇到在官方服务器进行匹配时出现了vac无法验证您的游戏会话的提示,这该怎么办呢?下面由系统城小编给大家介绍 ...

  2. csgo官方服务器连不上w7系统,技术员帮您win7玩csgo官方匹配提示vac无法验证您游戏会话的技巧?...

    技术员帮您win7玩csgo官方匹配提示vac无法验证您游戏会话的技巧? csgo是v社继cs起源后的正统续作,可是近期有许多国服和国际服的win7 64位系统的网友都碰到在官网服务器进行匹配时出现了 ...

  3. 转载:常用正则表达式大全!(例如:匹配中文、匹配html)

    常用正则表达式大全!(例如:匹配中文.匹配html) 匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[ ...

  4. CoSENT:特征式匹配与交互式匹配有多大差距?

    ©PaperWeekly 原创 · 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 一般来说,文本匹配有交互式(Interaction-based)和特征式(Representa ...

  5. php正则匹配sg-nc-wap_php正则匹配

    概述 正则表达式是一种描述字符串结果的语法规则,是一个特定的格式化模式,可以匹配.替换.截取匹配的字符串.常用的语言基本上都有正则表达式,如JavaScript.java等.其实,只有了解一种语言的正 ...

  6. java 完全匹配_正则表达式的完全匹配和部分匹配

    Java正则表达式有3中量词匹配模式: 1.贪婪量词: 先看整个字符串是否匹配,如果没有发现匹配,则去掉最后字符串中的最后一个字符,并再次尝试,如果还是没有发现匹配,那么,再次去掉最后一个字符串的最后 ...

  7. 正则匹配之正则匹配全部汇总:

    正则匹配全部汇总: 1.匹配中文:[\u4e00-\u9fa5] 2.英文字母:[a-zA-Z] 3.数字:[0-9] 4.匹配中文,英文字母和数字及下划线:^[\u4e00-\u9fa5_a-zA- ...

  8. C#正则表达式的完全匹配、部分匹配及忽略大小写的问题

    原文:C#正则表达式的完全匹配.部分匹配及忽略大小写的问题 问题的提出 根据用户给定表达式,里面含有各种数学函数,如求绝对值,三角函数,平方.开方等,分别以类似ABS(表达式),Sin(表达式),AS ...

  9. URAL 1721 Two Sides of the Same Coin(二分图匹配,输出匹配对象)

    题意:给出n个人的信息,名字.特征.排名. 在排名相差2的前提下,特征为testdata可以与特征为statements的组队,特征为anything可以任何一人组队: 求最多匹配对数,并将每队名字输 ...

  10. Python:利用原生函数count或正则表达式compile、findall、finditer实现匹配统计(包括模糊匹配的贪婪匹配、懒惰匹配)

    Python:利用原生函数count或正则表达式compile.findall.finditer实现匹配统计(包括模糊匹配的贪婪匹配.懒惰匹配) 目录 利用原生函数count或正则表达式compile ...

最新文章

  1. VMware 虚拟机
  2. 十进制转十六进制_汇编语言 输入一位十六进制数,输出其十进制表示
  3. wireshark一招掌握如何过滤想要的数据再也不用查找天书般的说明文档
  4. Windows10选择文件打开方式没有始终允许的解决方案
  5. 教你玩转CSS Position(定位)
  6. android view gesturedetector,如何在Android中利用 GestureDetector进行手势检测
  7. http的请求体body的几种数据格式
  8. 如何识别哭泣csdn_如何让敏感的孩子,不再那么敏感?不是溺爱,而是懂得这些方法...
  9. jQuery-1.9.1源码分析系列(十) 事件系统——事件包装
  10. 城市轨道交通信号系统学习笔记(四)信号机
  11. 介绍几个图论和复杂网络的程序库 —— BGL,QuickGraph,igraph和NetworkX
  12. 图像的峰值信噪比(PSNR)的计算方法
  13. 简单好用的开源会议室预约系统
  14. OpenGL学习之旅(三)——Bezier曲线理论与OpenGL实现
  15. oracle rac告警,oracle11.2.0.4 RAC 日志总有告警
  16. [CVPR2021]pi-GAN: Periodic Implicit Generative Adversarial Networks for 3D-Aware Image Synthesis
  17. e4a换行_这个易语言代码用E4A怎么写?
  18. 微软产品关于首字母大写的解决方案
  19. Linux内核中的位操作:ffs.h,fls.h
  20. 如何卸载Oracle

热门文章

  1. 仿9GAG制作过程(二)
  2. Google账号找回通用方法(尤其是知道账号密码仍无法登录和找回的)
  3. android箭头的样式修改,安卓自定义控件 一个指示用的箭头
  4. matlab代码:基于主从博弈的智能小区代理商定价策略及电动汽车充电管理
  5. 信噪比与雷达探测距离之间关系
  6. mac双系统下在移动硬盘安装linux,MAC系统下外置移动硬盘安装windows双系统教程。...
  7. 怎样把mp3转换成mp4?
  8. php 图片后缀,php获取图片格式(图片后缀)
  9. 计算机毕业设计springboot+vue基本微信小程序的考试系统
  10. IAR for STM8的简介、下载、安装及注册教程