note 112802 added to function.checkdate
| From: | daogurtsov at gmail dot com | Date: | Wed, 24 Jul 2013 08:53:59 +0000 |
| Subject: | note 112802 added to function.checkdate | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-195746@lists.php.net to get a copy of this message | ||
/* fixed regex for formats which use dash as separator:
added $regexp = preg_replace('/(?<=(\]|\)))'.$separator.'(?=(\[|\())/i',
"\\" . $separator, $regexp); to escape dash only between groups.
Removed optional two digits year and one digit day or month to fit MySQL date format requirement */
function is_valid_date($value, $format = 'dd.mm.yyyy'){
if(strlen($value) >= 6 && strlen($format) == 10){
// find separator. Remove all other characters from $format
$separator_only = str_replace(array('m','d','y'),'',
$format);
$separator = $separator_only[0]; // separator is first character
if($separator && strlen($separator_only) == 2){
// make regex
$regexp = str_replace('mm', '(0[1-9]|1[0-2])', $format);
$regexp = str_replace('dd', '(0[1-9]|[1-2][0-9]|3[0-1])', $regexp);
$regexp = str_replace('yyyy', '(19|20)[0-9][0-9]', $regexp);
$regexp =
preg_replace('/(?<=(\]|\)))'.$separator.'(?=(\[|\())/i', "\\" .
$separator, $regexp);
if($regexp != $value && preg_match('/'.$regexp.'\z/',
$value)){
// check date
$arr=explode($separator,$value);
$day= intval($arr[2]);
$month= intval($arr[1]);
$year=intval($arr[0]);
return checkdate($month, $day, $year);
}
}
}
return false;
}
----
Server IP: 212.199.163.163
Probable Submitter: 84.109.50.236
----
Manual Page -- http://php.net/manual/en/function.checkdate.php
Edit -- https://master.php.net/note/edit/112802
Del: integrated -- https://master.php.net/note/delete/112802/integrated
Del: useless -- https://master.php.net/note/delete/112802/useless
Del: bad code -- https://master.php.net/note/delete/112802/bad+code
Del: spam -- https://master.php.net/note/delete/112802/spam
Del: non-english -- https://master.php.net/note/delete/112802/non-english
Del: in docs -- https://master.php.net/note/delete/112802/in+docs
Del: other reasons-- https://master.php.net/note/delete/112802
Reject -- https://master.php.net/note/reject/112802
Search -- https://master.php.net/manage/user-notes.php