qh663
版主
  
中级会员
UID 30020
精华
0
积分 546
帖子 580
金钱 546 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2004-7-13 来自 河源
状态 离线
|
身份证位数转换及验证
search了一个论坛,没发现比较简单的身份证代码转换函数。我写的这两个函数关键算法是从网上找来的。取之于网络,回馈于网络。把这段代码贴出来,给有需要的朋友。
<?php /** *身份证15位转18位 *$str 15位号码 */ function id_card_15to18($str){ if (!preg_match("/^[1-9]d{14}$/", $str)) return false; $str = substr($str, 0, 6) . '19' . substr($str, 6); $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); $ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); for ($i = 0;$i < 17;$i++) $sigma += ((int) $str{$i}) * $wi[$i]; return $str.$ai[($sigma % 11)]; }
/** *身份证校验函数 *$str 15位或18位号码 */ function is_id_card($str){ if (preg_match("/^[1-9]d{14}(d{2}[0-9X])?$/", $str)) { if (strlen($str) == 18) { $s = substr($str, 0, 17); $wi = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); $ai = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); for ($i = 0;$i < 17;$i++) $sigma += ((int) $s{$i}) * $wi[$i]; if ($ai[($sigma % 11)] == $str{17}) return true; else return false; } return true; } return false; } ?>
|  五百多篇PHP学习资料
喜悦村BLOG
php团队接兼职项目QQ:80031807
PHP群:768844 |
|