regex (bi\u1ec3u th\u1ee9c ch\u00ednh quy)<\/a> gi\u00fap ch\u00fang ta c\u00f3 k\u1ebft qu\u1ea3 v\u1eeba nhanh ch\u00f3ng v\u1eeba ch\u00ednh x\u00e1c.<\/p>\n\n\n\nM\u00e3 t\u1ed5ng h\u1ee3p, sau ph\u1ea7n m\u00e3 t\u1ed5ng h\u1ee3p s\u1ebd l\u00e0 ph\u1ea7n gi\u1ea3i th\u00edch t\u1eebng h\u00e0m:<\/p>\n\n\n\n
<?php\n\n\/* \n * PHP functions to check Vietnamese people's date of birth v1.2\n * MIT License\n * Nguyen Duc Anh - freehost.page\n *\/\n\n\/\/\/=============================================================================\n\/\/ ki\u1ec3m tra \u0111\u1ea7u v\u00e0o c\u00f3 ph\u1ea3i ng\u00e0y th\u00e1ng n\u0103m hay kh\u00f4ng\n\/\/ b\u1ea5t k\u1ec3 d\u1ea1ng n\u00e0o, kh\u00f4ng ri\u00eang g\u00ec ng\u00e0y th\u00e1ng n\u0103m sinh\nfunction vn_is_date_ok($dateip){\n $rs = 0;\n \n $date = trim($dateip, ' '); \/\/ lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1ed1ng 2 b\u00ean, d\u1ef1 ph\u00f2ng v\u00ec c\u0169ng hi\u1ebfm g\u1eb7p\n \/\/ ki\u1ec3m tra kh\u1edbp v\u1edbi ki\u1ec3u d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m, m\u1eabu b\u00ean d\u01b0\u1edbi, ch\u1ea5p nh\u1eadn 3 ki\u1ec3u ph\u00e2n c\u00e1ch l\u00e0 \/, - v\u00e0 .\n $reg_dmy = '\/^(0?[1-9]|[12]\\d|3[01])[\\\/\\-\\.](0?[1-9]|1[012])[\\\/\\-\\.](\\d{2}|\\d{4})$\/'; \/\/ ki\u1ec3u ng\u00e0y, th\u00e1ng, n\u0103m\n $reg_mdy = '\/^(0?[1-9]|1[012])[\\\/\\-\\.](0?[1-9]|[12]\\d|3[01])[\\\/\\-\\.](\\d{2}|\\d{4})$\/'; \/\/ ki\u1ec3u th\u00e1ng, ng\u00e0y, n\u0103m\n\n $rs_datex = preg_match($reg_dmy, $date);\n $rs_datey = preg_match($reg_mdy, $date);\n\n if (($rs_datex == 1) || ($rs_datey == 1)) {$rs = 1;} \/\/b\u1eb1ng 1 ngh\u0129a l\u00e0 ph\u1ea3i kh\u1edbp m\u1ed9t trong hai d\u1ea1ng n\u00e0y\n \nreturn $rs;\n}\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ ki\u1ec3u ng\u00e0y, th\u00e1ng n\u0103m c\u1ee7a VN\nfunction vn_dmy_style($dateip){\n $rs = 0; \/\/ gi\u1ea3 \u0111\u1ecbnh ban \u0111\u1ea7u l\u00e0 kh\u00f4ng kh\u1edbp\n \n $date = trim($dateip, ' '); \/\/ lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1ed1ng 2 b\u00ean, d\u1ef1 ph\u00f2ng v\u00ec c\u0169ng hi\u1ebfm g\u1eb7p\n \/\/ ki\u1ec3m tra kh\u1edbp v\u1edbi ki\u1ec3u d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m, m\u1eabu b\u00ean d\u01b0\u1edbi, ch\u1ea5p nh\u1eadn 3 ki\u1ec3u ph\u00e2n c\u00e1ch l\u00e0 \/, - v\u00e0 .\n $reg_dmy = '\/^(0?[1-9]|[12]\\d|3[01])[\\\/\\-\\.](0?[1-9]|1[012])[\\\/\\-\\.](\\d{2}|\\d{4})$\/'; \/\/ ki\u1ec3u ng\u00e0y, th\u00e1ng, n\u0103m\n $rs_datex = preg_match($reg_dmy, $date);\n \n if ($rs_datex) {$rs = 1;} \/\/b\u1eb1ng 1 ngh\u0129a l\u00e0 kh\u1edbp\n \nreturn $rs;\n}\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ ki\u1ec3u th\u00e1ng, ng\u00e0y, n\u0103m c\u1ee7a n\u01b0\u1edbc ngo\u00e0i\nfunction vn_mdy_style($dateip){\n $rs = 0; \/\/ gi\u1ea3 \u0111\u1ecbnh ban \u0111\u1ea7u l\u00e0 kh\u00f4ng kh\u1edbp\n \n $date = trim($dateip, ' '); \/\/ lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1ed1ng 2 b\u00ean, d\u1ef1 ph\u00f2ng v\u00ec c\u0169ng hi\u1ebfm g\u1eb7p\n \/\/ ki\u1ec3m tra kh\u1edbp v\u1edbi ki\u1ec3u d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m, m\u1eabu b\u00ean d\u01b0\u1edbi, ch\u1ea5p nh\u1eadn 3 ki\u1ec3u ph\u00e2n c\u00e1ch l\u00e0 \/, - v\u00e0 .\n $reg_mdy = '\/^(0?[1-9]|1[012])[\\\/\\-\\.](0?[1-9]|[12]\\d|3[01])[\\\/\\-\\.](\\d{2}|\\d{4})$\/'; \/\/ ki\u1ec3u th\u00e1ng, ng\u00e0y, n\u0103m\n $rs_datey = preg_match($reg_mdy, $date);\n \n if ($rs_datey) {$rs = 1;} \/\/b\u1eb1ng 1 ngh\u0129a l\u00e0 kh\u1edbp\n \nreturn $rs;\n}\n\n\n\/\/\/=============================================================================\n\/\/ ki\u1ec3m tra xem d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng c\u00f3 d\u1ea5u - ho\u1eb7c . hay kh\u00f4ng?\nfunction vn_separation_date_check($date){\n $rs = 0; \/\/ gi\u1ea3 \u0111\u1ecbnh l\u00e0 kh\u00f4ng ph\u1ea3i l\u00e0m g\u00ec\n $rsx = preg_match('\/\\.\/', $date); \/\/ t\u00ecm d\u1ea5u ch\u1ea5m\n $rsy = preg_match('\/-\/', $date); \/\/ t\u00ecm d\u1ea5u g\u1ea1ch ngang\n \n if ($rsx || $rsy) {$rs = 1;}\n \nreturn $rs; \n}\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o \u0111\u00e3 v\u01b0\u1ee3t qua b\u00e0i test is_date_ok, gi\u1edd ch\u1ec9 \u0111\u1ed5i d\u1ea5u ph\u00e2n c\u00e1ch . v\u00e0 - th\u00e0nh \/\nfunction vn_separation_date($date){\n $date2 = preg_replace('\/\\.\/', '\/', $date); \/\/thay d\u1ea5u ch\u1ea5m\n $rs = preg_replace('\/-\/', '\/', $date2); \/\/thay d\u1ea5u g\u1ea1ch ngang\n \nreturn $rs; \n}\n\n\n\/\/\/=============================================================================\n\/\/ ki\u1ec3m tra xem c\u00f3 ph\u1ea3i th\u00eam s\u1ed1 kh\u00f4ng \u0111\u1eb1ng tr\u01b0\u1edbc kh\u00f4ng\nfunction vn_zero4date_check($date){\n $rs = 0;\/\/gi\u1ea3 \u0111\u1ecbnh ban \u0111\u1ea7u l\u00e0 kh\u00f4ng ph\u1ea3i chuy\u1ec3n\n $pt = '\/^(\\d{2})\\\/(\\d{2})\\\/(\\d{2}|\\d{4})$\/';\n $rev = preg_match($pt, $date); \/\/ t\u00ecm m\u1eabu\n \n if(!$rev) {$rs = 1;} \/\/ t\u1ee9c l\u00e0 ph\u1ea3i th\u00eam s\u1ed1 0\n \nreturn $rs; \n}\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ th\u00eam s\u1ed1 0 v\u00e0o \u0111\u1ea7u ng\u00e0y v\u00e0 th\u00e1ng \u0111\u1ed1i v\u1edbi c\u00e1c gi\u00e1 tr\u1ecb t\u1eeb 1 t\u1edbi 9. \n\/\/ d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o \u0111\u00e3 v\u01b0\u1ee3t qua is_date_ok v\u00e0 separation_date\nfunction vn_zero4date($date){\n $sp_date = mb_split('\/',$date); \/\/ t\u00e1ch\n $day = (int)$sp_date[0]; \/\/ chuy\u1ec3n th\u00e0nh d\u1ea1ng s\u1ed1\n $month = (int)$sp_date[1]; \/\/ chuy\u1ec3n th\u00e0nh d\u1ea1ng s\u1ed1\n $year = $sp_date[2];\n \n if ($day < 10) {$day='0'.$day;} \/\/ g\u1eafn th\u00eam 0 v\u00e0o\n if ($month < 10) {$month='0'.$month;} \/\/ g\u1eafn th\u00eam 0 v\u00e0o\n \n $rs = $day.'\/'.$month.'\/'.$year;\n \nreturn $rs; \n}\n\n\n\/\/\/=============================================================================\n\/\/ ki\u1ec3m tra n\u0103m sinh c\u00f3 ph\u1ea3i d\u1ea1ng 2 s\u1ed1 hay kh\u00f4ng\nfunction vn_date_yy_check($date) {\n $rs = 0;\n $sp_date = mb_split('\/',$date); \/\/ t\u00e1ch\n $year = (int)$sp_date[2]; \/\/ chuy\u1ec3n th\u00e0nh d\u1ea1ng s\u1ed1\n if ($year < 100) {$rs = 1;} \/\/ n\u1ebfu l\u00e0 d\u1ea1ng hai s\u1ed1 th\u00ec x\u00e1c nh\u1eadn\n\nreturn $rs; \n}\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ \u0111\u1ed5i n\u0103m t\u1eeb d\u1ea1ng 2 s\u1ed1 th\u00e0nh d\u1ea1ng 4 s\u1ed1, d\u00e0nh cho ng\u00e0y th\u00e1ng n\u0103m sinh\nfunction vn_date_yyyy($date) {\n $rs = $date;\n $sp_date = mb_split('\/',$date); \/\/ t\u00e1ch\n $year = (int)$sp_date[2]; \/\/ chuy\u1ec3n th\u00e0nh d\u1ea1ng s\u1ed1\n $now = date(\"y\"); \/\/ l\u1ea5y 2 s\u1ed1 cu\u1ed1i n\u0103m hi\u1ec7n t\u1ea1i\n \n if ($year < 100) { \n $day = $sp_date[0]; \n $month = $sp_date[1]; \n if ($year > $now) {$year = \"19\".$year;} \/\/ n\u1ebfu 2 s\u1ed1 cu\u1ed1i l\u1edbn h\u01a1n 2 s\u1ed1 n\u0103m hi\u1ec7n t\u1ea1i th\u00ec g\u1eafn 19 v\u00e0o\n else {$year = \"20\".$year;}\n $rs = $day.'\/'.$month.'\/'.$year;\n }\n\nreturn $rs; \n}\n\n\n\/\/\/=============================================================================\nfunction vn_true_date($date) { \/\/ ki\u1ec3m tra m\u1ed9t ng\u00e0y c\u00f3 ph\u1ea3i l\u00e0 th\u1ef1c hay kh\u00f4ng d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o l\u00e0 dd\/mm\/yy ho\u1eb7c dd\/mm\/yyyy\n $rs = 0;\n \n if (isset($date)) { \n $arr_date = mb_split('\/', $date);} \/\/ c\u1eaft ng\u00e0y th\u00e1ng n\u0103m th\u00e0nh c\u00e1c chu\u1ed7i chu\u1ed7i s\u1ed1 d\u1ef1a tr\u00ean k\u00fd t\u1ef1 ph\u00e2n c\u00e1ch\n\n if (isset($arr_date) && count($arr_date)===3) { \n $day = (int)$arr_date[0]; \/\/ l\u1ea5y ng\u00e0y v\u00e0 chuy\u1ec3n sang d\u1ea1ng s\u1ed1\n $month = (int)$arr_date[1]; \/\/ l\u1ea5y th\u00e1ng v\u00e0 chuy\u1ec3n sang d\u1ea1ng s\u1ed1\n $year = (int)$arr_date[2]; \/\/ l\u1ea5y n\u0103m v\u00e0 chuy\u1ec3n sang d\u1ea1ng s\u1ed1\n\n if (checkdate($month, $day, $year)) {$rs = 1;} \/\/ checkdate l\u00e0 h\u00e0m c\u00f3 s\u1eb5n c\u1ee7a PHP\n } \n \nreturn $rs;\n}\n\n\n\/\/\/=============================================================================\n\/\/ gi\u1edbi h\u1ea1n n\u0103m sinh, \u0111\u00e3 chu\u1ea9n h\u00f3a v\u1ec1 ki\u1ec3u ng\u00e0y, th\u00e1ng , n\u0103m 4 s\u1ed1, v\u1edbi vi\u1ec7c ph\u00e2n c\u00e1ch b\u1eafng d\u1ea5u \/, v\u00ed d\u1ee5 15\/05\/2015\n\/\/ v\u00ed d\u1ee5 gi\u1edbi h\u1ea1n t\u1eeb n\u0103m 2005 \u0111\u1ebfn n\u0103m 2015\n\/\/ $low l\u00e0 n\u0103m th\u1ea5p nh\u1ea5t ch\u1ea5p nh\u1eadn \u0111\u01b0\u1ee3c\n\/\/ $up l\u00e0 n\u0103m cao nh\u1ea5t ch\u1ea5p nh\u1eadn \u0111\u01b0\u1ee3c\n\nfunction vn_limit_year($date, $low, $up) {\n $rs = 0;\n \n if (isset($date)) {$sp_date = mb_split('\/',$date);} \/\/ t\u00e1ch\n \n if (isset($sp_date) && count($sp_date)===3) {\n $year = (int)$sp_date[2]; \/\/ chuy\u1ec3n th\u00e0nh d\u1ea1ng s\u1ed1\n if ($year >= $low && $year <= $up) {$rs = 1;}\n }\n \nreturn $rs; \n}\n\n\n\/\/\/=============================================================================\n\/\/ l\u1ea5y th\u00e1ng trong gi\u1ea3 \u0111\u1ecbnh d\u1eef li\u1ec7u l\u00e0 th\u00e1ng\/ng\u00e0y\/n\u0103m\nfunction vn_month_first($date) {\n $rs = -1;\n if (isset($date)) {$sp_date = mb_split('\/',$date);} \/\/ t\u00e1ch\n \n if (isset($sp_date) && count($sp_date)===3) {\n $rs = $sp_date[0]; \/\/ l\u1ea5y ph\u1ea7n t\u1eed \u0111\u1ea7u ti\u00ean trong m\u1ea3ng\n \/\/ trong gi\u1ea3 \u0111\u1ecbnh n\u00e0y s\u1ebd l\u00e0 th\u00e1ng\n }\n \nreturn $rs; \n}\n\n\n\/\/\/=============================================================================\n\/\/ l\u1ea5y th\u00e1ng trong gi\u1ea3 \u0111\u1ecbnh d\u1eef li\u1ec7u l\u00e0 ng\u00e0y\/th\u00e1ng\/n\u0103m\nfunction vn_month_second($date) {\n $rs = -1;\n if (isset($date)) {$sp_date = mb_split('\/',$date);} \/\/ t\u00e1ch\n \n if (isset($sp_date) && count($sp_date)===3) {\n $rs = $sp_date[1]; \/\/ l\u1ea5y ph\u1ea7n t\u1eed \u0111\u1ea7u ti\u00ean trong m\u1ea3ng\n \/\/ trong gi\u1ea3 \u0111\u1ecbnh n\u00e0y s\u1ebd l\u00e0 th\u00e1ng\n }\n \nreturn $rs; \n}\n\n\n\/\/\/=============================================================================\n\/\/ chu\u1ea9n h\u00f3a t\u1eeb A t\u1edbi Z d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m sinh\n\/\/ chuy\u1ec3n n\u0103m v\u1ec1 d\u1ea1ng 4 s\u1ed1\n\/\/ th\u00eam 0 v\u00e0o ng\u00e0y th\u00e1ng d\u01b0\u1edbi 10\n\/\/ chuy\u1ec3n c\u00e1c k\u00fd t\u1ef1 ph\u00e2n c\u00e1ch ng\u00e0y th\u00e1ng l\u00e0 - v\u00e0 . v\u1ec1 \/\n\nfunction vn_stand_date($date) {\n $date2 = vn_separation_date($date); \/\/ chuy\u1ec3n c\u00e1c k\u00fd t\u1ef1 ph\u00e2n c\u00e1ch ng\u00e0y th\u00e1ng l\u00e0 - v\u00e0 . v\u1ec1 \/\n $date3 = vn_zero4date($date2); \/\/ th\u00eam 0 v\u00e0o ng\u00e0y th\u00e1ng d\u01b0\u1edbi 10\n $rs = vn_date_yyyy($date3); \/\/ chuy\u1ec3n n\u0103m v\u1ec1 d\u1ea1ng 4 s\u1ed1\n \nreturn $rs; \n}\n\n\/\/\/==================================================================== End code<\/code><\/pre>\n\n\n\n
\n\n\n\n\u0110\u1ea7u ti\u00ean l\u00e0 h\u00e0m PHP ki\u1ec3m tra m\u1ed9t d\u1eef li\u1ec7u c\u00f3 ph\u1ea3i ng\u00e0y th\u00e1ng n\u0103m kh\u00f4ng, n\u00f3 ki\u1ec3m tra t\u01b0\u01a1ng \u0111\u1ed1i ch\u1eb7t, nh\u01b0ng ch\u01b0a \u00e9p \u0111\u1ec3 bu\u1ed9c ph\u1ea3i l\u00e0 ng\u00e0y th\u00e1ng n\u0103m sinh. C\u00e1i n\u00e0y c\u00f3 \u00edch trong vi\u1ec7c ki\u1ec3m tra d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o:<\/p>\n\n\n\n
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ ki\u1ec3m tra \u0111\u1ea7u v\u00e0o c\u00f3 ph\u1ea3i ng\u00e0y th\u00e1ng n\u0103m hay kh\u00f4ng, b\u1ea5t k\u1ec3 d\u1ea1ng n\u00e0o, kh\u00f4ng ri\u00eang g\u00ec ng\u00e0y th\u00e1ng n\u0103m sinh\nfunction vn_is_date_ok($dateip){\n $rs = 0;\n $date = trim($dateip, ' '); \/\/ lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1ed1ng 2 b\u00ean, d\u1ef1 ph\u00f2ng v\u00ec c\u0169ng hi\u1ebfm g\u1eb7p\n \/\/ ki\u1ec3m tra kh\u1edbp v\u1edbi ki\u1ec3u d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m, m\u1eabu b\u00ean d\u01b0\u1edbi, ch\u1ea5p nh\u1eadn 3 ki\u1ec3u ph\u00e2n c\u00e1ch l\u00e0 \/, - v\u00e0 .\n $reg_dmy = '\/^(0?[1-9]|[12]\\d|3[01])[\\\/\\-\\.](0?[1-9]|1[012])[\\\/\\-\\.](\\d{2}|\\d{4})$\/'; \/\/ ki\u1ec3u ng\u00e0y, th\u00e1ng, n\u0103m\n $reg_mdy = '\/^(0?[1-9]|1[012])[\\\/\\-\\.](0?[1-9]|[12]\\d|3[01])[\\\/\\-\\.](\\d{2}|\\d{4})$\/'; \/\/ ki\u1ec3u th\u00e1ng, ng\u00e0y, n\u0103m\n\n $rs_datex = preg_match($reg_dmy, $date);\n $rs_datey = preg_match($reg_mdy, $date);\n\n if (($rs_datex == 1) || ($rs_datey == 1)) {$rs = 1;} \/\/b\u1eb1ng 1 ngh\u0129a l\u00e0 ph\u1ea3i kh\u1edbp m\u1ed9t trong hai d\u1ea1ng n\u00e0y\n \nreturn $rs;\n}<\/code><\/pre>\n\n\n\n- K\u1ebft qu\u1ea3 c\u1ee7a h\u00e0m \u0111\u01b0\u1ee3c g\u1eafn v\u00e0o bi\u1ebfn
$rs<\/code>, m\u1eb7c \u0111\u1ecbnh g\u00e1n b\u1eb1ng 0, t\u01b0\u01a1ng \u0111\u01b0\u01a1ng v\u1edbi FALSE<\/code>, t\u1ee9c kh\u00f4ng ph\u1ea3i, n\u1ebfu ki\u1ec3m tra \u0111\u00fang, gi\u00e1 tr\u1ecb n\u00e0y s\u1ebd chuy\u1ec3n th\u00e0nh 1, t\u01b0\u01a1ng \u0111\u01b0\u01a1ng v\u1edbi TRUE<\/code>. Vi\u1ec7c \u0111\u1ec3 gi\u00e1 tr\u1ecb nh\u01b0 v\u1eady r\u1ea5t ti\u1ec7n cho ch\u00fang ta sau n\u00e0y khi k\u1ebft h\u1ee3p v\u1edbi h\u00e0m ki\u1ec3u nh\u01b0 if<\/code>;<\/li>trim()<\/code> d\u00f9ng \u0111\u1ec3 lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1eafng tr\u01b0\u1edbc v\u00e0 sau, c\u00e1i n\u00e0y \u0111\u1ec3 d\u1ef1 ph\u00f2ng, n\u00f3 kh\u00f4ng lo\u1ea1i b\u1ecf kho\u1ea3ng tr\u1eafng gi\u1eefa, kho\u1ea3ng tr\u1eafng gi\u1eefa d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m c\u00f3 kh\u1ea3 n\u0103ng cao l\u00e0 d\u1eef li\u1ec7u sai n\u00ean ch\u00fang ta s\u1ebd kh\u00f4ng can thi\u1ec7p \u0111i\u1ec1u \u0111\u00f3;<\/li><\/ul>\n\n\n\n$reg_dmy = '\/^(0?[1-9]|[12]\\d|3[01])[\\\/\\-\\.](0?[1-9]|1[012])[\\\/\\-\\.](\\d{2}|\\d{4})$\/';<\/code><\/pre>\n\n\n\n\u0110\u00e2y l\u00e0 bi\u1ec3u th\u1ee9c ch\u00ednh quy b\u1eaft kh\u00e1 ch\u1eb7t d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o ng\u00e0y th\u00e1ng n\u0103m, n\u00f3 y\u00eau c\u1ea7u:<\/p>\n\n\n\n
- Ng\u00e0y ch\u1ec9 b\u1eaft \u0111\u1ea7u t\u1eeb 1 \u0111\u1ebfn 31, c\u00f3 th\u1ec3 c\u00f3 ho\u1eb7c kh\u00f4ng c\u00f3 s\u1ed1 0 \u0111\u1eb1ng tr\u01b0\u1edbc ng\u00e0y d\u01b0\u1edbi 10;<\/li>
- Th\u00e1ng ch\u1ec9 b\u1eaft \u0111\u1ea7u t\u1eeb 1 \u0111\u1ebfn 12, c\u00f3 th\u1ec3 c\u00f3 ho\u1eb7c kh\u00f4ng c\u00f3 s\u1ed1 0 \u0111\u1eb1ng tr\u01b0\u1edbc th\u00e1ng d\u01b0\u1edbi 10;<\/li>
- N\u0103m ch\u1ec9 c\u00f3 th\u1ec3 l\u00e0 s\u1ed1 \u1edf d\u1ea1ng hai s\u1ed1 ho\u1eb7c b\u1ed1n s\u1ed1;<\/li>
- Th\u1ee9 t\u1ef1 y\u00eau c\u1ea7u l\u00e0 ng\u00e0y r\u1ed3i \u0111\u1ebfn th\u00e1ng, r\u1ed3i m\u1edbi \u0111\u1ebfn n\u0103m;<\/li>
- K\u00fd t\u1ef1 ng\u0103n c\u00e1ch ch\u1ec9 c\u00f3 th\u1ec3 l\u00e0 d\u1ea5u \/ ho\u1eb7c – ho\u1eb7c .<\/li>
- Kh\u00f4ng ch\u1ea5p nh\u1eadn k\u00fd t\u1ef1 ng\u0103n c\u00e1ch kh\u00e1c;<\/li>
- D\u1ea5u ^ v\u00e0 $ trong bi\u1ec3u th\u1ee9c ch\u00ednh quy \u1edf tr\u00ean y\u00eau c\u1ea7u to\u00e0n b\u1ed9 chu\u1ed7i ph\u1ea3i kh\u1edbp v\u1edbi bi\u1ec3u th\u1ee9c ch\u00ednh quy n\u00e0y ch\u1ee9 kh\u00f4ng ph\u1ea3i l\u00e0 m\u1ed9t ph\u1ea7n c\u1ee7a chu\u1ed7i l\u00e0 \u0111\u1ee7. Ngh\u0129a l\u00e0 khi d\u00f9ng n\u00f3 ch\u00fang ta c\u0169ng lo\u1ea1i lu\u00f4n ngay c\u00e1c d\u1eef li\u1ec7u c\u00f3 c\u00e1c k\u00fd t\u1ef1 l\u1ea1 kh\u00f4ng h\u1ee3p chu\u1ea9n, v\u00ed d\u1ee5 nh\u01b0 ?, ‘ hay kho\u1ea3ng tr\u1eafng,.., b\u1ea5t k\u1ef3 k\u00fd t\u1ef1 n\u00e0o kh\u00f4ng ph\u1ea3i s\u1ed1, kh\u00f4ng ph\u1ea3i l\u00e0 m\u1ed9t trong 3 k\u00fd t\u1ef1 ph\u00e2n c\u00e1ch \u0111\u01b0\u1ee3c ch\u1ea5p nh\u1eadn;<\/li><\/ul>\n\n\n\n
—<\/p>\n\n\n\n
$reg_mdy = '\/^(0?[1-9]|1[012])[\\\/\\-\\.](0?[1-9]|[12]\\d|3[01])[\\\/\\-\\.](\\d{2}|\\d{4})$\/';<\/code><\/pre>\n\n\n\nC\u00f3 \u00fd ngh\u0129a t\u01b0\u01a1ng t\u1ef1, ch\u1ec9 kh\u00e1c l\u00e0 n\u00f3 theo \u0111\u1ecbnh d\u1ea1ng th\u00e1ng, ng\u00e0y r\u1ed3i n\u0103m.<\/p>\n\n\n\n
—<\/p>\n\n\n\n
$rs_datex = preg_match($reg_dmy, $date);\n$rs_datey = preg_match($reg_mdy, $date);<\/code><\/pre>\n\n\n\nHai h\u00e0m \u0111\u1ec3 so s\u00e1nh k\u1ebft qu\u1ea3, n\u00f3 tr\u1ea3 v\u1ec1 1 n\u1ebfu kh\u1edbp, tr\u1ea3 v\u1ec1 0 n\u1ebfu kh\u00f4ng kh\u1edbp.<\/p>\n\n\n\n
—<\/p>\n\n\n\n
if (($rs_datex == 1) || ($rs_datey == 1)) {$rs = 1;} \/\/b\u1eb1ng 1 ngh\u0129a l\u00e0 ph\u1ea3i kh\u1edbp m\u1ed9t trong hai d\u1ea1ng n\u00e0y<\/code><\/pre>\n\n\n\nC\u00e1i n\u00e0y d\u00f9ng \u0111\u1ec3 g\u00e1n gi\u00e1 tr\u1ecb cho bi\u1ebfn $rs. N\u1ebfu kh\u1edbp m\u1ed9t trong 2 d\u1ea1ng th\u00ec x\u00e1c th\u1ef1 \u0111\u00f3 l\u00e0 d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m theo y\u00eau c\u1ea7u c\u1ee7a ch\u00fang ta.<\/p>\n\n\n\n
\n\n\n\nTi\u1ebfp theo l\u00e0 h\u00e0m chuy\u1ec3n \u0111\u1ed5i d\u1ea5u ph\u00e2n c\u00e1ch:<\/p>\n\n\n\n
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o \u0111\u00e3 l\u00e0 ng\u00e0y th\u00e1ng n\u0103m ti\u00eau chu\u1ea9n (is_date_ok), gi\u1edd ch\u1ec9 \u0111\u1ed5i d\u1ea5u ph\u00e2n c\u00e1ch . v\u00e0 - th\u00e0nh \/\nfunction vn_separation_date($date){\n $date2 = preg_replace('\/\\.\/', '\/', $date); \/\/thay d\u1ea5u ch\u1ea5m\n $date3 = preg_replace('\/-\/', '\/', $date2); \/\/thay d\u1ea5u g\u1ea1ch ngang\n \nreturn $date3; \n}<\/code><\/pre>\n\n\n\nD\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o \u0111\u1ea1t y\u00eau c\u1ea7u khi ki\u1ec3m tra v\u1edbi h\u00e0m is_date_ok<\/code> \u1edf tr\u00ean s\u1ebd \u0111\u01b0\u1ee3c \u0111\u01b0a v\u00e0o \u0111\u00e2y.<\/p>\n\n\n\nCh\u00fang ta s\u1ebd thay th\u1ebf d\u1ea5u ph\u00e2n c\u00e1ch d\u1ea1ng .<\/code> v\u00e0 d\u1ea1ng -<\/code> th\u00e0nh d\u1ea1ng \/<\/code> cho \u0111\u1ed3ng b\u1ed9.<\/p>\n\n\n\n
\n\n\n\n\u1ede \u0111\u00e2y ch\u00fang ta s\u1ebd th\u00eam s\u1ed1 0 v\u00e0o ng\u00e0y d\u01b0\u1edbi 10, v\u00e0 c\u1ea3 v\u00e0o th\u00e1ng d\u01b0\u1edbi 10 n\u1eefa, cho ph\u00f9 h\u1ee3p v\u1edbi y\u00eau c\u1ea7u:<\/p>\n\n\n\n
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ th\u00eam s\u1ed1 0 v\u00e0o \u0111\u1ea7u ng\u00e0y v\u00e0 th\u00e1ng \u0111\u1ed1i v\u1edbi c\u00e1c gi\u00e1 tr\u1ecb t\u1eeb 1 t\u1edbi 9. D\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o \u0111\u00e3 \u0111\u1ea1t is_date_ok() v\u00e0 separation_date()\n\nfunction vn_zero4date($date){\n $sp_date = mb_split('\/',$date); \/\/ t\u00e1ch\n $day = (int)$sp_date[0]; \/\/ chuy\u1ec3n th\u00e0nh d\u1ea1ng s\u1ed1\n $month = (int)$sp_date[1]; \/\/ chuy\u1ec3n th\u00e0nh d\u1ea1ng s\u1ed1\n $year = $sp_date[2];\n \n if ($day < 10) {$day='0'.$day;} \/\/ g\u1eafn th\u00eam 0 v\u00e0o\n if ($month < 10) {$month='0'.$month;} \/\/ g\u1eafn th\u00eam 0 v\u00e0o\n \n $date2 = $day.'\/'.$month.'\/'.$year;\n \nreturn $date2; \n}<\/code><\/pre>\n\n\n\n
\n\n\n\nTi\u1ebfp \u0111\u1ebfn l\u00e0 ph\u1ea7n chuy\u1ec3n n\u0103m t\u1eeb d\u1ea1ng 2 s\u1ed1 v\u1ec1 d\u1ea1ng 4 s\u1ed1, ch\u1ec9 d\u00e0nh cho ng\u00e0y th\u00e1ng n\u0103m sinh.<\/p>\n\n\n\n
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ \u0111\u1ed5i n\u0103m t\u1eeb d\u1ea1ng 2 s\u1ed1 th\u00e0nh d\u1ea1ng 4 s\u1ed1, d\u00e0nh cho ng\u00e0y th\u00e1ng n\u0103m sinh\nfunction vn_date_yyyy($date) {\n $sp_date = mb_split('\/',$date); \/\/ t\u00e1ch\n $day = $sp_date[0]; \n $month = $sp_date[1]; \n $year = (int)$sp_date[2]; \/\/ chuy\u1ec3n th\u00e0nh d\u1ea1ng s\u1ed1\n $now = date(\"y\"); \/\/ l\u1ea5y 2 s\u1ed1 cu\u1ed1i n\u0103m hi\u1ec7n t\u1ea1i\n \n if ($year < 100) {\n if ($year > $now) {$year = \"19\".$year;} \/\/ n\u1ebfu 2 s\u1ed1 cu\u1ed1i l\u1edbn h\u01a1n 2 s\u1ed1 n\u0103m hi\u1ec7n t\u1ea1i th\u00ec g\u1eafn 19 v\u00e0o\n else {$year = \"20\".$year;}\n }\n $date2 = $day.'\/'.$month.'\/'.$year;\n\nreturn $date2; \n}<\/code><\/pre>\n\n\n\n\u1ede \u0111\u00e2y t\u00f4i ch\u1ec9 thi\u1ebft k\u1ebf n\u00f3 cho ng\u00e0y th\u00e1ng n\u0103m sinh c\u1ee7a nh\u1eefng ng\u01b0\u1eddi trong kho\u1ea3ng th\u1eddi gian 100 n\u0103m t\u00ednh t\u1eeb hi\u1ec7n t\u1ea1i, r\u01a1i v\u00e0o kho\u1ea3ng 1922 cho \u0111\u1ebfn 2021 (n\u0103m vi\u1ebft b\u00e0i l\u00e0 n\u0103m 2021). C\u00e1c n\u0103m ti\u1ebfp theo n\u00f3 s\u1ebd t\u1ef1 \u0111i\u1ec1u ch\u1ec9nh t\u0103ng d\u1ea7n. V\u00ed d\u1ee5 v\u00e0o n\u0103m 2024 th\u00ec s\u1ebd l\u00e0 1925 cho \u0111\u1ebfn 2024.<\/p>\n\n\n\n
Thu\u1eadt to\u00e1n \u0111\u01a1n gi\u1ea3n theo quy t\u1eafc ng\u00f3n tay c\u00e1i, \u0111\u00fang trong ph\u1ea7n l\u1edbn tr\u01b0\u1eddng h\u1ee3p. \u1ede \u0111\u00e2y n\u1ebfu 2 s\u1ed1 cu\u1ed1i c\u1ee7a n\u0103m l\u1edbn h\u01a1n 2 s\u1ed1 cu\u1ed1i c\u1ee7a n\u0103m hi\u1ec7n t\u1ea1i th\u00ec g\u1eafn 19 v\u00e0o, n\u1ebfu kh\u00f4ng th\u00ec g\u1eafn 20 v\u00e0o. B\u1ea1n n\u00e0o c\u1ea7n \u0111i\u1ec1u ch\u1ec9nh ri\u00eang s\u1ebd c\u1ea7n b\u1ed5 sung th\u00eam m\u00e3.<\/p>\n\n\n\n
\n\n\n\nTi\u1ebfp \u0111\u1ebfn l\u00e0 h\u00e0m chu\u1ea9n h\u00f3a t\u1ed5ng h\u1ee3p t\u1eeb c\u00e1c h\u00e0m tr\u00ean:<\/p>\n\n\n\n
\/\/\/\/ L\u01afU \u00dd \n\/\/\/=============================================================================\n\/\/ chu\u1ea9n h\u00f3a t\u1eeb A t\u1edbi Z d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m sinh\n\/\/ chuy\u1ec3n n\u0103m v\u1ec1 d\u1ea1ng 4 s\u1ed1\n\/\/ th\u00eam 0 v\u00e0o ng\u00e0y th\u00e1ng d\u01b0\u1edbi 10\n\/\/ chuy\u1ec3n c\u00e1c k\u00fd t\u1ef1 ph\u00e2n c\u00e1ch ng\u00e0y th\u00e1ng l\u00e0 - v\u00e0 . v\u1ec1 \/\n\nfunction vn_stand_date($date) {\n $date2 = vn_separation_date($date); \/\/ chuy\u1ec3n c\u00e1c k\u00fd t\u1ef1 ph\u00e2n c\u00e1ch ng\u00e0y th\u00e1ng l\u00e0 - v\u00e0 . v\u1ec1 \/\n $date3 = vn_zero4date($date2); \/\/ th\u00eam 0 v\u00e0o ng\u00e0y th\u00e1ng d\u01b0\u1edbi 10\n $rs = vn_date_yyyy($date3); \/\/ chuy\u1ec3n n\u0103m v\u1ec1 d\u1ea1ng 4 s\u1ed1\n \nreturn $rs; \n}<\/code><\/pre>\n\n\n\n
\n\n\n\nKhi c\u1ea7n x\u00e1c th\u1ef1c m\u1ed9t ng\u00e0y n\u00e0o \u0111\u00f3 c\u00f3 ph\u1ea3i l\u00e0 ng\u00e0y th\u00e1ng n\u0103m th\u1ef1c hay kh\u00f4ng b\u1ea1n c\u00f3 th\u1ec3 d\u00f9ng h\u00e0m n\u00e0y:<\/p>\n\n\n\n
function vn_true_date($date) { \/\/ ki\u1ec3m tra m\u1ed9t ng\u00e0y c\u00f3 ph\u1ea3i l\u00e0 th\u1ef1c hay kh\u00f4ng d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o l\u00e0 dd\/mm\/yy ho\u1eb7c dd\/mm\/yyyy\n $rs = 0;\n \n if (isset($date)) { \n $arr_date = mb_split('\/', $date);} \/\/ c\u1eaft ng\u00e0y th\u00e1ng n\u0103m th\u00e0nh c\u00e1c chu\u1ed7i chu\u1ed7i s\u1ed1 d\u1ef1a tr\u00ean k\u00fd t\u1ef1 ph\u00e2n c\u00e1ch\n\n if (isset($arr_date) && count($arr_date)===3) { \n $day = (int)$arr_date[0]; \/\/ l\u1ea5y ng\u00e0y v\u00e0 chuy\u1ec3n sang d\u1ea1ng s\u1ed1\n $month = (int)$arr_date[1]; \/\/ l\u1ea5y th\u00e1ng v\u00e0 chuy\u1ec3n sang d\u1ea1ng s\u1ed1\n $year = (int)$arr_date[2]; \/\/ l\u1ea5y n\u0103m v\u00e0 chuy\u1ec3n sang d\u1ea1ng s\u1ed1\n\n if (checkdate($month, $day, $year)) {$rs = 1;} \/\/ checkdate l\u00e0 h\u00e0m c\u00f3 s\u1eb5n c\u1ee7a PHP\n } \n \nreturn $rs;\n}<\/code><\/pre>\n\n\n\nD\u1ef1 ph\u00f2ng b\u1ea1n n\u00e0o ki\u1ec3m tra th\u1eb3ng t\u1eeb d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o, m\u00e0 kh\u00f4ng qua c\u00e1c b\u01b0\u1edbc \u0111\u1ea7u t\u00f4i b\u1ed5 sung th\u00eam isset($date)<\/code> \u0111\u1ec3 tr\u00e1nh tr\u01b0\u1eddng h\u1ee3p \u0111\u1ea7u v\u00e0o l\u00e0 NULL ho\u1eb7c r\u1ed7ng d\u1eabn \u0111\u1ebfn x\u1eed l\u00fd c\u00f3 v\u1ea5n \u0111\u1ec1.<\/p>\n\n\n\nN\u1ebfu ng\u00e0y th\u00e1ng n\u0103m l\u00e0 \u0111\u00fang n\u00f3 s\u1ebd tr\u1ea3 v\u1ec1 k\u1ebft qu\u1ea3 TRUE.<\/p>\n\n\n\n
\n\n\n\nH\u00e0m gi\u1edbi h\u1ea1n n\u0103m sinh. V\u00ed d\u1ee5 b\u1ea1n mu\u1ed1n l\u1ea5y d\u1eef li\u1ec7u ch\u1ec9 t\u1eeb nh\u1eefng ai sinh trong kho\u1ea3ng th\u1eddi gian n\u00e0o \u0111\u00f3. C\u00e1i n\u00e0y c\u0169ng th\u01b0\u1eddng d\u00f9ng trong ph\u00e2n t\u00edch, khi d\u1eef li\u1ec7u n\u0103m sinh ph\u00e2n t\u00e1n kh\u00f4ng \u0111\u1ec1u, nh\u1eefng n\u0103m t\u1eadp trung nhi\u1ec1u \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u1ec3 ph\u00e2n t\u00edch n\u00ean t\u1ea1o th\u00e0nh nh\u00f3m ri\u00eang, v\u00ec d\u1eef li\u1ec7u c\u00f3 t\u00ednh tin c\u1eady cao h\u01a1n khi r\u00fat tr\u00edch th\u1ed1ng k\u00ea v\u1ec1 th\u1eddi gian.<\/p>\n\n\n\n
\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/ gi\u1edbi h\u1ea1n n\u0103m sinh, \u0111\u00e3 chu\u1ea9n h\u00f3a v\u1ec1 ki\u1ec3u ng\u00e0y, th\u00e1ng , n\u0103m 4 s\u1ed1, v\u1edbi vi\u1ec7c ph\u00e2n c\u00e1ch b\u1eafng d\u1ea5u \/, v\u00ed d\u1ee5 15\/05\/2015\n\/\/ v\u00ed d\u1ee5 gi\u1edbi h\u1ea1n t\u1eeb n\u0103m 2005 \u0111\u1ebfn n\u0103m 2015\n\/\/ $low l\u00e0 n\u0103m th\u1ea5p nh\u1ea5t ch\u1ea5p nh\u1eadn \u0111\u01b0\u1ee3c\n\/\/ $up l\u00e0 n\u0103m cao nh\u1ea5t ch\u1ea5p nh\u1eadn \u0111\u01b0\u1ee3c\n\nfunction vn_limit_year($date,$low,$up) {\n $rs = 0;\n $sp_date = mb_split('\/',$date); \/\/ t\u00e1ch\n $year = (int)$sp_date[2]; \/\/ chuy\u1ec3n th\u00e0nh d\u1ea1ng s\u1ed1\n if ($year >= $low && $year <= $up) {$rs=1;}\n \nreturn $rs; \n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"Trong b\u00e0i vi\u1ebft n\u00e0y t\u00f4i s\u1ebd tr\u00ecnh b\u00e0y v\u1edbi c\u00e1c b\u1ea1n c\u00e1ch ki\u1ec3m tra, chu\u1ea9n h\u00f3a d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m sinh \u1edf ng\u01b0\u1eddi trong m\u1ed9t t\u1ec7p d\u1eef li\u1ec7u l\u1edbn. M\u1ed9t s\u1ed1 l\u01b0u \u00fd: \u0110\u1ecbnh d\u1ea1ng chu\u1ea9n m\u00e0 ch\u00fang ta h\u01b0\u1edbng \u0111\u1ebfn l\u00e0 c\u1ea5u tr\u00fac dd\/mm\/yyyy, v\u00ed d\u1ee5 nh\u01b0 05\/10\/2008. C\u1ea5u tr\u00fac n\u00e0y y\u00eau c\u1ea7u …<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[238,241],"tags":[],"yoast_head":"\n
C\u00e1c h\u00e0m PHP d\u00f9ng \u0111\u1ec3 ki\u1ec3m tra d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m sinh ng\u01b0\u1eddi (v1.2) • Ki\u1ebfn c\u00e0ng<\/title>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\t\n\t\n\t\n","yoast_head_json":{"title":"C\u00e1c h\u00e0m PHP d\u00f9ng \u0111\u1ec3 ki\u1ec3m tra d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m sinh ng\u01b0\u1eddi (v1.2) • Ki\u1ebfn c\u00e0ng","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kiencang.net\/php-kiem-tra-nam-sinh\/","og_locale":"vi_VN","og_type":"article","og_title":"C\u00e1c h\u00e0m PHP d\u00f9ng \u0111\u1ec3 ki\u1ec3m tra d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m sinh ng\u01b0\u1eddi (v1.2) • Ki\u1ebfn c\u00e0ng","og_description":"Trong b\u00e0i vi\u1ebft n\u00e0y t\u00f4i s\u1ebd tr\u00ecnh b\u00e0y v\u1edbi c\u00e1c b\u1ea1n c\u00e1ch ki\u1ec3m tra, chu\u1ea9n h\u00f3a d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m sinh \u1edf ng\u01b0\u1eddi trong m\u1ed9t t\u1ec7p d\u1eef li\u1ec7u l\u1edbn. M\u1ed9t s\u1ed1 l\u01b0u \u00fd: \u0110\u1ecbnh d\u1ea1ng chu\u1ea9n m\u00e0 ch\u00fang ta h\u01b0\u1edbng \u0111\u1ebfn l\u00e0 c\u1ea5u tr\u00fac dd\/mm\/yyyy, v\u00ed d\u1ee5 nh\u01b0 05\/10\/2008. C\u1ea5u tr\u00fac n\u00e0y y\u00eau c\u1ea7u …","og_url":"https:\/\/kiencang.net\/php-kiem-tra-nam-sinh\/","og_site_name":"Ki\u1ebfn c\u00e0ng","article_author":"https:\/\/www.facebook.com\/anhducnguyen87\/","article_published_time":"2021-09-14T13:29:12+00:00","author":"Nguy\u1ec5n \u0110\u1ee9c Anh","twitter_card":"summary_large_image","twitter_misc":{"\u0110\u01b0\u1ee3c vi\u1ebft b\u1edfi":"Nguy\u1ec5n \u0110\u1ee9c Anh","\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"13 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/kiencang.net\/php-kiem-tra-nam-sinh\/","url":"https:\/\/kiencang.net\/php-kiem-tra-nam-sinh\/","name":"C\u00e1c h\u00e0m PHP d\u00f9ng \u0111\u1ec3 ki\u1ec3m tra d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m sinh ng\u01b0\u1eddi (v1.2) • Ki\u1ebfn c\u00e0ng","isPartOf":{"@id":"https:\/\/kiencang.net\/#website"},"datePublished":"2021-09-14T13:29:12+00:00","dateModified":"2021-09-14T13:29:12+00:00","author":{"@id":"https:\/\/kiencang.net\/#\/schema\/person\/5e7e1a04d8d1218ad8c421ba43d25c16"},"breadcrumb":{"@id":"https:\/\/kiencang.net\/php-kiem-tra-nam-sinh\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kiencang.net\/php-kiem-tra-nam-sinh\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kiencang.net\/php-kiem-tra-nam-sinh\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kiencang.net\/"},{"@type":"ListItem","position":2,"name":"C\u00e1c h\u00e0m PHP d\u00f9ng \u0111\u1ec3 ki\u1ec3m tra d\u1eef li\u1ec7u ng\u00e0y th\u00e1ng n\u0103m sinh ng\u01b0\u1eddi (v1.2)"}]},{"@type":"WebSite","@id":"https:\/\/kiencang.net\/#website","url":"https:\/\/kiencang.net\/","name":"Ki\u1ebfn c\u00e0ng","description":"\u00d4m l\u00fd thuy\u1ebft, h\u00f4n th\u1ef1c h\u00e0nh","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kiencang.net\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"vi"},{"@type":"Person","@id":"https:\/\/kiencang.net\/#\/schema\/person\/5e7e1a04d8d1218ad8c421ba43d25c16","name":"Nguy\u1ec5n \u0110\u1ee9c Anh","image":{"@type":"ImageObject","inLanguage":"vi","@id":"https:\/\/kiencang.net\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6d71f9b89393952a8382e30dad26c1ec?s=96&d=monsterid&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6d71f9b89393952a8382e30dad26c1ec?s=96&d=monsterid&r=g","caption":"Nguy\u1ec5n \u0110\u1ee9c Anh"},"description":"Sinh n\u0103m 1987, t\u1ed1t nghi\u1ec7p Cao \u0111\u1eb3ng th\u1ef1c h\u00e0nh FPT qu\u00e3ng 2014, chuy\u00ean ng\u00e0nh Thi\u1ebft k\u1ebf website. T\u00f4i th\u00edch Content, SEO, Ads, T\u0103ng t\u1ed1c website v\u00e0 Th\u01b0\u01a1ng m\u1ea1i \u0111i\u1ec7n t\u1eed. B\u00ean c\u1ea1nh b\u00e0i t\u1ef1 vi\u1ebft, t\u00f4i c\u0169ng d\u1ecbch nhi\u1ec1u n\u1ed9i dung th\u00fa v\u1ecb c\u1ee7a c\u00e1c t\u00e1c gi\u1ea3 kh\u00e1c nhau. FB c\u00e1 nh\u00e2n: facebook.com\/anhducnguyen87. Email li\u00ean h\u1ec7: guiemailchotoi@gmail.com","sameAs":["https:\/\/www.facebook.com\/anhducnguyen87\/"],"url":"https:\/\/kiencang.net\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/posts\/14768"}],"collection":[{"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/comments?post=14768"}],"version-history":[{"count":0,"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/posts\/14768\/revisions"}],"wp:attachment":[{"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/media?parent=14768"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/categories?post=14768"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kiencang.net\/wp-json\/wp\/v2\/tags?post=14768"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}