2013-05-12 98 views

回答

0
<?php 

$date = '2009/10/22'; 

if (preg_match('/^(?:(19[0-9]{2}|20[0-9]{2}))\/(0[1-9]|1[012])\/(0[1-9]|[12][0-9]|3[01])$/', $date)) { 

    echo $date , ' is a valid date format.'; 

} else { 

    echo $date , ' is not a valid date format!'; 

} 

?> 

也請確保您使用了checkdate()功能除了這一點。

+1

謝謝!這是正確的答案 – 2013-05-12 12:54:44

0

試試這個:

if (preg_match('#^\d{4}/\d{2}/\d{2}$#', $date)) { 
... 
} 

這隻會匹配的日期,但你必須要驗證日期有效過,例如有沒有這樣的事情在2月31

+0

謝謝你,但有相匹配的日期,如2009-11-12 這裏的一個代碼,該代碼: 如果(IS_STRING($值)&&的preg_match('/ ^(\ d {4})\ /( (\ d {2})((\ d {2}))(:\ d {2}))?)$ /',$ value ,$ m)) 但我想匹配2009/11/12例如。這裏的值是一個日期字符串 – 2013-05-12 12:52:48

+0

這正是我的代碼匹配。你甚至沒有嘗試過,是嗎? – silkfire 2013-05-13 08:39:45

0

你可以做這樣的 - 首先驗證格式,然後用checkdate()驗證值:

$value = '2009/10/22'; 

echo valid_date($value) ? "Yep, $value is a valid date" : "Nah, it's not valid"; 

function valid_date($value) 
{ 
    return preg_match('/^(?:(\d{4,})\/(\d{2})\/(\d{2}))$/', $value, $matches) === 1 && checkdate((int)$matches[2], (int)$matches[3], (int)$matches[1]); 
} 

平原preg_match()是不會削減它。