예제 #1
0
function verify_iban($iban)
{
    # First convert to machine format.
    $iban = iban_to_machine_format($iban);
    # Get country of IBAN
    $country = iban_get_country_part($iban);
    # Test length of IBAN
    if (strlen($iban) != iban_country_get_iban_length($country)) {
        return false;
    }
    # Get checksum of IBAN
    $checksum = iban_get_checksum_part($iban);
    # Get country-specific IBAN format regex
    $regex = '/' . iban_country_get_iban_format_regex($country) . '/';
    # Check regex
    if (preg_match($regex, $iban)) {
        # Regex passed, check checksum
        if (!iban_verify_checksum($iban)) {
            return false;
        }
    } else {
        return false;
    }
    # Otherwise it 'could' exist
    return true;
}
예제 #2
0
 print $iban . " ... ";
 if (!verify_iban($iban)) {
     print "FAILED";
     ########## try to provide better output #############
     $iban = iban_to_machine_format($iban);
     $country = iban_get_country_part($iban);
     $observed_length = strlen($iban);
     $expected_length = iban_country_get_iban_length($country);
     if ($observed_length != $expected_length) {
         print " (length {$observed_length} does not match expected length {$expected_length} for country {$country})";
     }
     $checksum = iban_get_checksum_part($iban);
     if (!iban_verify_checksum($iban)) {
         print " (checksum {$checksum} invalid)";
     }
     $regex = '/' . iban_country_get_iban_format_regex($country) . '/';
     if (!preg_match($regex, $iban)) {
         print " (does not match regex {$regex} for country {$country})";
     }
     ####################################################
     $errors++;
     $suggestions = iban_mistranscription_suggestions($iban);
     if (is_array($suggestions)) {
         if (count($suggestions) == 1) {
             print " (you meant '" . $suggestions[0] . "', right?)";
         } elseif (count($suggestions) > 1) {
             print " (perhaps ";
             $done = 0;
             foreach ($suggestions as $suggestion) {
                 if ($done > 0) {
                     print ', or ';
예제 #3
0
 public function IBANFormatRegex()
 {
     return iban_country_get_iban_format_regex($this->code);
 }