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

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

[shcode=php]
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;
}
[/shcode]
پاسخ
تشکر شده توسط:
#2
برای یکسری شماره های خاص مثل همه ارقام تکراری و... استثنا بگذارین.
پاسخ
تشکر شده توسط: PHPOnline , meysam1366




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