【问题标题】:Machine-Readable Passport Check Digit机读护照校验码
【发布时间】:2018-02-20 01:54:29
【问题描述】:

在 PHP 中,我试图根据给定的出生日期验证第二行(包含出生日期)。行的不同元素,我给了不同的输入,所以不用拆分数字。

我的问题确实是,对于出生日期,有一个校验位可以通过公式验证出生日期。

如何使用 PHP 验证校验位?

How the check digit works
Machine-readable passports - Wikipedia

[编辑]

我创建了一些应该可以工作的代码。出于某种原因,它总是返回 true。

<?php

//Set variables for passport number and the corresponding check digit
$passportnumber = "123456789";
$checkdigit= "7";

//Set variables for each character of the passport number    
$ppnumber1 = substr($passportnumber,0,1);   
$ppnumber2 = substr($passportnumber,1,1);    
$ppnumber3 = substr($passportnumber,2,1);    
$ppnumber4 = substr($passportnumber,3,1);    
$ppnumber5 = substr($passportnumber,4,1);    
$ppnumber6 = substr($passportnumber,5,1);    
$ppnumber7 = substr($passportnumber,6,1);    
$ppnumber8 = substr($passportnumber,7,1);    
$ppnumber9 = substr($passportnumber,8,1);    


//Check the passport number has been set properly
echo "Passport number is 
 $ppnumber1$ppnumber2$ppnumber3$ppnumber4$ppnumber5$ppnumber6$ppnumber7$ppnumber8$ppnumber9";  

$formula = ($ppnumber1*7) + ($ppnumber2*3) + ($ppnumber3*1) + ($ppnumber4*7) + ($ppnumber5*3) + ($ppnumber6*1) + ($ppnumber7*7) + ($ppnumber8*3) + ($ppnumber9*1);

$checker = $formula % 10;

if ($checker = $checkdigit){
echo "True";
} else{
echo "False";
}

?>

【问题讨论】:

  • 请-不要链接维基百科或其他文章-将您的问题缩小到您的输入字符串是什么、您的预期输出应该是什么样子以及提出了什么到目前为止。否则,您的问题可能会被关闭。

标签: php regex passport.js


【解决方案1】:

我意识到我需要 == 而不是 =。然后代码按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 2018-10-14
    • 2011-08-06
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    相关资源
    最近更新 更多