/** * Verify the ID number * @param $vStr * @return bool */function Iscreditno ($vStr) {$vCity = array (' 11 ', ' 12 ', ' 13 ', ' 14 ', ' 15 ', ' 21 ', ' 22 ', ' 23 ', ' 31 ', ' 32 ', ' 33 ', ' 34 ', ' 35 ', ' 36 ', ' 37 ', ' 41 ', ' 42 ', ' 43 ', ' 44 ', ' 45 ', ' 46 ', ' 50 ', ' 51 ', ' 52 ', ' 53 ', ' 54 ', ' 61 ', ' 62 ', ' 63 ', ' 64 ', ' 65 ', ' 71 ', ' 81 ', ' 82 ', ' 91 '); if (!preg_match ('/^ ([\d]{17}[xx\d]|[ \D]{15}) $/', $VSTR)) return false; if (!in_array (substr ($vStr, 0, 2), $vCity)) return false; $VSTR = preg_replace ('/[xx]$/i ', ' a ', $vStr); $vLength = strlen ($VSTR); if ($vLength = =) {$vBirthday = substr ($VSTR, 6, 4). ‘-‘ . SUBSTR ($VSTR, 10, 2). ‘-‘ . SUBSTR ($VSTR, 12, 2); } else {$vBirthday = ' + '. substr ($VSTR, 6, 2). ‘-‘ . SUBSTR ($VSTR, 8, 2). ‘-‘ . SUBSTR ($VSTR, 10, 2); if (date (' y-m-d ', Strtotime ($vBirthday)) = $vBirthday) return false; if ($vLength = =) {$vSum = 0; for ($i = n; $i >= 0; $i-) {$vSubStr = substr ($vStr, 17-$i, 1); $vSum + = (Pow (2, $i)%) * (($vSubStr = = ' a ')? 10:intval ($VSUBSTR, 11)); if ($vSum%! = 1) return false; } return true;
PHP Verified ID Number correctness