function validation_filter_id_card($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;
}
$idcard_base=substr($idcard,0,17);
if(idcard_verify_number($idcard_base)!=strtoupper(substr($idcard,17,1))){
return false;
}else{
return true;
}
}

最新文章

  1. tomcat7 IP限制配置
  2. heartbeat重要文件的配置参数说明
  3. css3 -- 多列
  4. C#关键字base
  5. php大力力 [032节] php设计时候遇见麻烦:XQB50-H8268 进水电磁阀
  6. C#读取Excel五种方式的体会
  7. oracle dblink使用
  8. poj 2631 Roads in the North【树的直径裸题】
  9. 为什么class中属性以空格分隔?
  10. 学习AJAX(二)
  11. 绩效考核指标KPI 听课笔记
  12. RMIC命令提示找不到类的问题
  13. Matlab立体标定mat转换成Opencv的CvMat
  14. java 多线程,T1 T2 T3 顺序执行
  15. 前端解析websocket数据问题
  16. (原创)Callable、FutureTask中阻塞超时返回的坑点
  17. Git:一本书 + 一个站点,让你掌握 Git
  18. oracle自定义类型 示例
  19. Interval GCD
  20. 《Windows核心编程》第十一章——线程池

热门文章

  1. 给大家带来一些 horm的一些知识!
  2. mvc中查询字符串请求过长
  3. 为什么用bower 安装bootstrap而不用npm来安装?
  4. 19 个常用的 JavaScript 简写方法
  5. iphone投屏电脑 苹果x用无线充电好不好
  6. redis cluster是如何做到集两家之长的
  7. 简单 PHP + MySQL 数据库动态网站制作 -- 摘抄
  8. canvas学习总结四:绘制虚线
  9. SQL Server如何查找表名或列名中包含空格的表和列
  10. mysql replace into 的使用情况