【DAY.10】php判断18位身份账号码是否正确(基于加权算法)
来源:互联网 发布:通勤自行车 知乎 编辑:程序博客网 时间:2024/06/10 00:12
思路:18位身份证号码,前17位配合加权因子加权求和,在通过取模11,获取校验码所在的key,最后匹配第18位与所取得的key是否相符,来判断是否符合
注意点:函数录入变量时,如果类型为整形,php为自动转化为浮点型,造成后面操作错误
源码
function isIdcard($number){//如果变量输入为数字,会自动转化为浮点型,下面操作也就无意义了if(gettype($number) != 'string'){echo '请以字符串的方式输入';return;}//如果有x,转化为大写X$number = strtoupper($number);//加权因子$weight = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);//校验码$check = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');//初始化加权和$sum = 0;//计算前17位加权和for($i=0;$i<17;$i++){$sum += (int)$number[$i]*$weight[$i];}//加权和取模11,结果就是校验码的key$checKey = $sum % 11;//判断身份证第18位是否与取得的校验码相符if($number[17] == $check[$checKey]){echo "right";}else{echo "false";}}
0 0
- 【DAY.10】php判断18位身份账号码是否正确(基于加权算法)
- 判断银行账号是否输入正确
- 判断银行账号是否输入正确
- 判断银行账号是否输入正确
- 判断银行账号是否输入正确
- PHP判断日期格式是否正确
- php判断IP地址格式是否正确
- php判断邮箱格式是否正确
- php判断上传图片类型是否正确
- php判断json格式是否正确
- 判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验
- PHP 判断网址是否正确 / 网页是否存在
- 身份证号第18位(效验码)计算方法 用于检测身份证号是否正确
- 18位身份证校验是否正确
- php使用ajax实现注册账号时判断账号是否已经存在
- php自带函数判断是否正确的email地址
- 判断手机号码是否正确
- 判断邮箱是否正确
- BZOJ P2705[SDOI2012]Longge的问题
- Kafka发送超过broker限定大小的消息时Client和Broker端各自会有什么异常?
- 三羊献瑞,蓝桥杯2015年第3题
- 【abap-sql】限制OPEN SQL获取数据条数以及优化原则
- Spark Core源码分析之RDD基础
- 【DAY.10】php判断18位身份账号码是否正确(基于加权算法)
- PAT-A1054
- 蓝桥杯 历届试题 带分数
- 线段树
- Android 活动的启动模式
- Viewpager中嵌套ListView问题
- java 实现邮箱验证注册
- 三羊献瑞
- ubuntu16.04 virtualbox Kernel driver not installed (rc=-1908)