function validateDate($date)
{
echo $date;
//2012-08-24 20:30:00
if(preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2}) ([1-2]{1})([0-9]{1}):([0-5]{1})([0-9]{1}):([0-5]{1})([0-9]{1})$/', $date) >= 1)
{
return true;
}
else
{
return false;
}
}
這總是返回false。我用一個唯一的工具來建立正則表達式,並且它在那裏工作得很好。當我將「/」添加到正則表達式時出現問題。不知何故,PHP似乎需要這些,但我不知道爲什麼,我不知道爲什麼它打破了我的正則表達式。帶工作正則表達式的PHP preg_match
它應該返回TRUE爲某事。像「2012-08-24 20:30:00」和假「asdf2012-08-24 20:30:00asdf」或任何不符合我的正則表達式
在此先感謝!
-----------------------編輯 感謝您的答案!
由於有些用戶指出我的函數在樣本日期「2012-08-24 20:30:00」中返回true。不過,只有當我手動設置$ date ='2012-08-24 20:30:00'時才這樣。如果我使用完全相同的字符串在我的代碼中的其他地方調用函數,它將返回false。有誰知道爲什麼?
----------------------- EDIT2
是啊,對不起,浪費你的時間,它實際上是一些空白已添加到串。在調用我的函數之前在我的日期使用trim()可以得到正確的結果。
感謝大家!
這不是您如何驗證日期。它會允許'9999-99-99'。雖然允許9999年是高瞻遠矚,但我不認爲九十年是一個真正的月份。 –
考慮使用strtotime()或DateTime類而不是那 – Bgi
順便說一句,'/'不是必需的 - 只有一些匹配的表達式分隔符。如果你喜歡,你可以使用'|','〜',甚至是字母數字字符,只要你在末尾匹配它(並且在表達式體中使用相同字符的轉義實例)。 –