最近网站(天气预报15天查询)扩展添加×××号码查询的便民功能,其在有一个关于×××效验码的验证功能,在这里和大家分享!

首先要知道×××的组成:

号码的结构: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

18位×××号码前17位相对是固定的,就是最后一位需要通过前17位按一定的算法生成!

校验码算法: 第十八位数,作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么 此人的×××就变成了19位。X是罗马数字的10,用X来代替10,可以保证公民的×××符合国家标准

根据算法写出对应的功能函数:

<?php
function checkcode($idCard){$Wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);    // 加权因子  $ValideCode = array(1, 0, X, 9, 8, 7, 6, 5, 4, 3, 2);            // ×××验证位值.10代表X  for ( $i = 0; $i < 17; $i++) {  $sum += $Wi[$i] * $idCard[$i];            // 加权求和  }  $valCodePosition = $sum % 11;return $ValideCode[$valCodePosition];
}
?>

本功能函数是验证输入的18位×××号码得到其真实有效的效验码!

实例运用:×××号码查询(http://15tianqi.cn/sfz/)

对函数的返回码可进行×××号最后一位比对是否正确!

转载于:https://blog.51cto.com/mumayi/1404122

php ×××号码效验码生成函数相关推荐

  1. 身份证号第18位(效验码)计算方法 用于检测身份证号是否正确

    前言: 由于在某些时候,可能需要用户输入真实的身份证号,但是用户可能会胡乱输入虚假的身份证号,导致信息的不真实性,所以为了防止用户胡乱输入,可以通过一些小方法来检测身份证号是否输入正确,本文将介绍一种 ...

  2. 公民身份号码 校验码 检证程序

    公民身份号码  校验码 检证程序 using System; using System.Collections.Generic; using System.Linq; using System.Tex ...

  3. 公民身份号码校验码算法(C#版)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  4. 公民身份号码 校验码 检证程序

    公民身份号码  校验码 检证程序 using System; using System.Collections.Generic; using System.Linq; using System.Tex ...

  5. 16位CRC循环冗余校验码生成函数

    16位的CRC校验码生成,可使用以下函数: //16位CRC校验码生成 //返回值:CRC校验码 unsigned int CRC_check(unsigned char *addr,int num) ...

  6. Java身份证号码严格验证(第18位校验码算法实现)

    /*** 身份证号码的格式:610821-20061222-612-X 由18位数字组成:前6位为地址码,第7至14位为出生日期码,第15至17位为顺序码,* 第18位为校验码.检验码分别是0-10共 ...

  7. 判断身份证号码的正确性源码

    判断身份证号码的正确性源码 根据[中华人民共和国国家标准   GB   11643-1999]中有关公民身份号码的规定,      '公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成. ...

  8. 【Java】身份证号码验证

    代码引用自:https://gitee.com/appleat/codes/ynrtqujv0wfgesm8ia9b547 1 package xxx; 2 3 /** 4 * Created by ...

  9. java验证身份证号码是否有效源代码

    转载自   java验证身份证号码是否有效源代码 1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 package test; import java.t ...

最新文章

  1. Linux shell 学习笔记(7)— 构建基本脚本(变量、重定向、管道、状态码)
  2. SQL Server DATEADD() 函数
  3. 静态html使用js发送邮件,html实现邮箱发送邮件_js发送邮件至指定邮箱功能
  4. 机器学习Sklearn实战——adaboost
  5. 【NLP】文本生成?还不快上知识库
  6. Java和操作系统交互细节
  7. axios代理跨域 cli4_跨域本质及解决办法
  8. sql怎么读_大白话讲解脏写、脏读、不可重复读和幻读
  9. C#LeetCode刷题之#242-有效的字母异位词(Valid Anagram)
  10. 我当圣诞老人跳舞啦!
  11. linux显示 cron 服务是否正在运行_通过Linux系统自带日志监控系统安全
  12. java语法和python语法的一些区别
  13. fpga开发教程 labview_NILabVIEW高性能FPGA开发者指南.pdf
  14. php学习redis买什么书,redis
  15. angular对象简单介绍
  16. 云蹦迪云广场舞软件开源源码
  17. SQL Server 数据库修复专家SQLRescue
  18. Auto.js 实现钉钉实时抢红包
  19. 【C语言进阶】C语言实现通讯录
  20. 保姆式RecyclerView下拉刷新、上拉加载更多Kotlin

热门文章

  1. CSS透明度设置支持IE,Chrome,Firefox浏览器
  2. 金融科技公司采用大数据领先银行的三种方式
  3. Swift Web 开发之 Vapor - 路由(二)
  4. Java Semaphore实现线程池任务调度
  5. Android TrafficStats类的使用
  6. 设置Android设备在睡眠期间始终保持WLAN开启的代码实现
  7. ssh_exchange_identification: Connection closed by remote host 问题的解决 (转)
  8. Control Compliance Suite,听说过吗?
  9. 走近TCP/IP协议
  10. linux mpstat命令