我發現這個wiki頁面: http://en.wikipedia.org/wiki/IBAN#Validating_the_IBAN計算IBAN帳號
我跟着這樣的步驟:
$iban = 'GB82WEST12345698765432';
$bankname = substr($iban, 0, 4);
$accountnumber = substr($iban, 4);
$country = $this->convertToNumber($bankname);
$number = ($accountnumber . $country);
$area = substr($number, 0, 4);
$accountnumber = substr($number, 4);
$number = $this->convertToNumber($area) . $accountnumber;
var_dump('3214282912345698765432161182');
var_dump($number);
所以現在我有相同數量的例子。輸出:
string 'GB82WEST12345698765432' (length=22)
string '3214282912345698765432161182' (length=28)
string '3214282912345698765432161182' (length=28)
如果我現在做3214282912345698765432161182 mod 97 = 1
:
var_dump($number % 97);
我得到:int 78
,他們得到的結果1
。我做錯了什麼?
大概php不處理大整數。這是在wiki中解釋的。在python中,結果是1.谷歌似乎http://pear.php.net/package/Math_BigInteger可以提供幫助嗎?順便說一句,維基解釋瞭如何用不含大整數的langague來計算modulo。 – mpromonet
畢竟我使用從symfony2驗證的IBAN:http://symfony.com/doc/current/reference/constraints/Iban.html(> = Symfony2.3) –