رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
بررسی صحت کد ملی
#1
آیا کد ملی 9876543210 صحیح است ؟ این الگوریتم صحیح میدونه این شماره رو و چند تا دیگه رو
حتی در این سایت هم که الگوریتمش رو کامل توضیح داده این شماره رو وارد می کنیم میزنه صحیح است . : http://www.aliarash.com/article/codemeli/codemeli.htm

باید if قرار بدهیم اگر 9876543210 یا 9999999999 یا ... بود False برگردونه ؟ علاوه بر 10 عدد تکراری مثل 555555555 و 9876543210 چه اعدادی دیگری هستند که دراین الگوریتم کار نمی کنند ؟

function isValidIranianNationalCode($input) {
    # check if input has 10 digits that all of them are not equal
    if (!preg_match("/^\d{10}$/", $input)) {
        return false;
    }
 
    $check = (int) $input[9];
    $sum = array_sum(array_map(function ($x) use ($input) {
        return ((int) $input[$x]) * (10 - $x);
    }, range(0, 8))) % 11;
 
    return $sum < 2 && $check == $sum || $sum >= 2 && $check + $sum == 11;
}
پاسخ
تشکر شده توسط:
#2
برای یکسری شماره های خاص مثل همه ارقام تکراری و... استثنا بگذارین.
پاسخ
تشکر شده توسط: PHPOnline , meysam1366




کاربران در حال بازدید این موضوع: 1 مهمان