注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

php开发lamp

《西安--木木》-经历丰富了生活。 架构师QQ群: 246695517

 
 
 

日志

 
 

php检验-组织机构代码  

2013-09-28 16:17:34|  分类: php应用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

/*
组织机构代码是每一个机关、社会团体、企事业单位在全国范围内唯一的、始终不变的法定代码标识。
最新使用的组织机构代码在1997年颁布实施,由8位数字(或大写拉丁字母)本体代码和1位数字(或大写拉丁字母)校验码组成。本体代码采用系列(即分区段)顺序编码方法。校验码按下列公式计算:
8
C9 = 11 - MOD ( ∑Ci * Wi ,11) … (2)
i=1
其中:MOD —— 表示求余函数;
i —— 表示代码字符从左到右位置序号;
Ci —— 表示第i位置上的代码字符的值,采用附录A“代码字符集”所列字符;
C9 —— 表示校验码;
Wi —— 表示第i位置上的加权因子,其数值如下表:
i 1 2 3 4 5 6 7 8
Wi 3 7 9 10 5 8 4 2
当MOD函数值为1(即 C9 = 10)时,校验码用字母X表示。
*/


<?php
//自动转换为大写进行的检验
//入库前需要所有字母转为大写strtoupper
//机构代码为9位无‘-’

function check_group($str) {
$str = strtoupper($str);
$wi = array(3, 7, 9, 10, 5, 8, 4, 2);
$total = 0;
$a = ord("A"); //65
$z = ord("Z"); //90
for ($i = 0; $i < 8; $i++) {
$stri = substr($str, $i, 1); //(Mid(str_in, i, 1))  
$num = 0;
$tempstri = ord($stri);
if ($tempstri >= $a & $tempstri <= $z) {
$num = ($tempstri - 55) * $wi[$i];
} else if ($tempstri >= 48 & $tempstri <= 57) {
$value = $tempstri - 48;
$num = $value * $wi[$i];
}
$total = $total + $num;
}

$checki = 11 - (intval($total) % 11);
if ($checki == 10) {
$c9 = "X";
} else if ($checki == 11) {
$c9 = "0";
} else {
$c9 = $checki;
}
if (ord(substr($str, -1)) == ord($c9) && strlen($str)==9) {
return true;
} else {
return false;
}
}

//$str = 'L18322123';
$str = '743719761';
var_dump(check_group($str));
$arr = array('692454192', '053582091', 'L6005760X', 'L60057722', '074951247', '066448668', 'L0691990X', '670260856', '069216715', '701268691', '06487003X', '664198400');
foreach ($arr as $v) {
var_dump(check_group($v));
}

?>


机构代码验证 js版本

function check_group(str) {
var str = str.toUpperCase();
var wi = {'0':3,'1':7,'2':9,'3':10,'4':5,'5':8,'6':4,'7':2};
var wi_length=0,total = 0,a = ord("A"),z = ord("Z"); //65,90
for (x in wi){
++wi_length;
}
for(var i=0; i< wi_length; i++)
{
var stri = str.substr(i, 1);
var num = 0;
var tempstri = ord(stri);
if (tempstri >= a & tempstri <= z) {
num = (tempstri - 55) * wi[i];
} else if (tempstri >= 48 & tempstri <= 57) {
var value = tempstri - 48;
num = value * wi[i];
}
total = total + num;
}

var checki = 11 - (parseInt(total) % 11);
if (checki === 10) {
var c9 = "X";
} else if (checki === 11) {
var c9 = "0";
} else {
var c9 = checki;
}

if (ord(str.substr(-1)) === ord(c9) && str.length===9) {
return true;
} else {
return false;
}
}

var str = '743719761';
console.log(check_group(str));

var arr = new Array('692454192', '053582091', 'L6005760X', 'L60057722', '074951247', '066448668', 'L0691990X', '670260856', '069216715', '701268691', '06487003X', '664198400');

arr.forEach(function(e){
alert(check_group(e));
}) ;

  评论这张
 
阅读(364)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017