通过PHP 获取身份证相关信息 获取生肖,获取星座,获取年龄,获取性别
生活随笔
收集整理的這篇文章主要介紹了
通过PHP 获取身份证相关信息 获取生肖,获取星座,获取年龄,获取性别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
下面展示一些 封裝好的方法。
/*** 身份證校驗是否合法** @param string $idcard 完整的身* 份證號*/ function checkIdCard($idcard = '') {// 只能是18位if (strlen($idcard) != 18) {return false;}// 取出本體碼$idcard_base = substr($idcard, 0, 17);// 取出校驗碼$verify_code = substr($idcard, 17, 1);// 加權因子$factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);// 校驗碼對應值$verify_code_list = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');// 根據前17位計算校驗碼$total = 0;for ($i = 0; $i < 17; $i++) {$total += substr($idcard_base, $i, 1) * $factor[$i];}// 取模$mod = $total % 11;// 比較校驗碼if ($verify_code == $verify_code_list[$mod]) {// 如果年齡計算失敗,則判斷為 身份證號有誤if (ageVerification($idcard)) {return true;}}return false; }/*** 根據身份證號碼獲取生日* inupt $code = 完整的身份證號* @return string Y-m-d*/ function getBirthday($code = '') {$age_time = strtotime(substr($code, 6, 8));if ($age_time === false) {return false;}return date("Y-m-d", $age_time); } /** * 根據身份證號碼獲取年齡 * inupt $code = 完整的身份證號 * @return $age : 年齡 三位數 如023 */ function ageVerification($code = '') {$age_time = strtotime(substr($code, 6, 8));if ($age_time === false) {return false;}list($y1, $m1, $d1) = explode("-", date("Y-m-d", $age_time));$now_time = strtotime("now");list($y2, $m2, $d2) = explode("-", date("Y-m-d", $now_time));$age = $y2 - $y1;if ((int)($m2 . $d2) < (int)($m1 . $d1)) {$age -= 1;}return $age; }/*** 更據身份證獲取性別1男2女*/ function getSex($cid = ''): int {//根據身份證號返回性別if (!checkIdCard($cid)) {return 0;}$sexint = (int) substr($cid, 16, 1);return 0 === $sexint % 2 ? 2 : 1; } /*** 根據身份* 證號,自動返回對應的星座*/ function getXingZuo($cid = '') {// 根據身份證號,自動返回對應的星座if (!checkIdCard($cid)) {return 0;}$bir = substr($cid, 10, 4);$month = (int) substr($bir, 0, 2);$day = (int) substr($bir, 2);$strValue = '';if ((1 == $month && $day <= 21) || (2 == $month && $day <= 19)) {$strValue = 0; //水瓶座} elseif ((2 == $month && $day > 20) || (3 == $month && $day <= 20)) {$strValue = 1; //雙魚座} elseif ((3 == $month && $day > 20) || (4 == $month && $day <= 20)) {$strValue = 2; //白羊座} elseif ((4 == $month && $day > 20) || (5 == $month && $day <= 21)) {$strValue = 3; //金牛座} elseif ((5 == $month && $day > 21) || (6 == $month && $day <= 21)) {$strValue = 4; //雙子座} elseif ((6 == $month && $day > 21) || (7 == $month && $day <= 22)) {$strValue = 5; //巨蟹座} elseif ((7 == $month && $day > 22) || (8 == $month && $day <= 23)) {$strValue = 6; //獅子座} elseif ((8 == $month && $day > 23) || (9 == $month && $day <= 23)) {$strValue = 7; //處女座} elseif ((9 == $month && $day > 23) || (10 == $month && $day <= 23)) {$strValue = 8; //天秤座} elseif ((10 == $month && $day > 23) || (11 == $month && $day <= 22)) {$strValue = 9; //天蝎座} elseif ((11 == $month && $day > 22) || (12 == $month && $day <= 21)) {$strValue = 10; //射手座} elseif ((12 == $month && $day > 21) || (1 == $month && $day <= 20)) {$strValue = 11; //魔羯座}return $strValue; } /*** 根據身份證號返回對應的生肖*/ function getSh engXiao($cid = ''): int {if (!checkIdCard($cid)) {return 0;}$start = 1901;$end = $end = (int) substr($cid, 6, 4);$x = ($start - $end) % 12;$value = '';if (1 == $x || -11 == $x) {$value = 0; //鼠}if (0 == $x) {$value = 1; //牛}if (11 == $x || -1 == $x) {$value = 2; //虎}if (10 == $x || -2 == $x) {$value = 3; //兔}if (9 == $x || -3 == $x) {$value = 4; //龍}if (8 == $x || -4 == $x) {$value = 5; //蛇}if (7 == $x || -5 == $x) {$value = 6; //馬}if (6 == $x || -6 == $x) {$value = 7; //羊}if (5 == $x || -7 == $x) {$value = 8; //猴}if (4 == $x || -8 == $x) {$value = 9; //雞}if (3 == $x || -9 == $x) {$value = 10; //狗}if (2 == $x || -10 == $x) {$value = 11; //豬}return $value; }總結
以上是生活随笔為你收集整理的通过PHP 获取身份证相关信息 获取生肖,获取星座,获取年龄,获取性别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 总裁演说思维技巧:口才训练方法写日记法
- 下一篇: php开发宝典例8.2,PHP学习宝典-