تابع چک کردن صحت کد ملی
لینک کوتاه جمعه , 17 مرداد 1393 13 دیدگاه
و شاید تا الان تنها اعتبارسنجی که انجام میدادید چک کردن ده رقمی بودن و فقط عدد بودن کد ملی بوده
بنا به دلایلی لازم شد که واقعا صحت کد ملی کاربر را بوسیله آلگوریتمی تشخیص دهیم پس با استفاده از توضیحات جناب
علی آرش اقدام به پیاده سازی یک تابع کردیم که به شرح زیر است
+ این فانکشن در تاریخ 1395/09/01 بروزرسانی شد
function checkNationalCode($code='') { $code = (string) preg_replace('/[^0-9]/','',$code); if(strlen($code)>10 or strlen($code)<8) return false; if(strlen($code)==8) $code = "00".$code; if(strlen($code)==9) $code = "0".$code; $list_code = str_split($code); $last = (int) $list_code[9]; unset($list_code[9]); $i = 10; $sum = 0; foreach($list_code as $key=>$_) { $sum += intval($_) * $i; $i--; } $mod =(int) $sum % 11; if($mod >= 2) $mod = 11 - $mod; if( $mod != $last) return false; for($i=0;$i<10;$i++) { $str = str_repeat($i,10); if($str==$code) return false; } return true; }