首页 VIN车辆识别代码查询 VIN车辆识别代码查询示例代码 VIN车辆识别码校验规则代码[PHP]

VIN车辆识别码校验规则代码示例代码PHP

作者: 阅读数:107 上传时间:2025-03-21

VIN车辆识别码校验规则代码

//验证VIN车辆识别代码是否正确	
function check($vin, $ismake=0)
{
    $weight = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];
    $map = ['0'=>0,'1'=>1,'2'=>2,'3'=>3,'4'=>4,'5'=>5,'6'=>6,'7'=>7,'8'=>8,'9'=>9,
            'A'=>1 ,'B'=>2, 'C'=>3, 'D'=>4, 'E'=>5, 'F'=>6, 'G'=>7, 'H'=>8, 'J'=>1,
     'K'=>2, 'L'=>3, 'M'=>4, 'N'=>5, 'P'=>7, 'R'=>9, 'S'=>2, 'T'=>3, 'U'=>4, 'V'=>5, 'W'=>6
    , 'X'=>7, 'Y'=>8, 'Z'=>9];
    $num = 0; 
 
    if(!preg_match('#^[1-9A-Z][0-9A-Z]{16}$#i', $vin) || preg_match('#^([0-9A-Z])\1{16}$#', $vin)) 
    return false;
 
    $vin = strtoupper($vin);
    $result = str_split($vin);
 
    foreach($result as $k=>$v){            
    if($k == 8) continue;
 
    $num += $weight[$k] * $map[$v];
    //var_dump($num);
    }
 
    $yu = $num%11 == 10 ? 'X' : $num%11;
 
    if($ismake) return $yu;
    else return $yu == $result[8] ?true :false;
}

//生成第9位:
$nine = check('1HGCM82633A123456', 1);

//验证第9位是否合法:
if(check('1HGCM82633A123456')) echo '合法';