下面是PHP版本的组织机构代码证校验的源代码:

组织机构代码是每一个机关、社会团体、企事业单位在全国范围内唯一的、始终不变的法定代码标识。

最新使用的组织机构代码在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));

}

关于PHP版本的组织机构代码证校验函数,本文就介绍这么多,希望对您有所帮助,谢谢!

03-16 00:02