日付と時刻の検証には正規表現が必要です。フォーマットはyyyy-mm-ddThh:mm:ss
です。 Tは日時の間の単なる記号です。おかげで助けを日時のPHP正規表現
0
A
答えて
3
フルパワーのソリューション:
function validate($str)
{
preg_match('/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})$/', $str, $matches);
if (count($matches) != 7)
return false;
$valid_year = range(2000, 2050); // your range
$valid_month = range(1, 12);
$valid_day = range(1, 31);
$valid_hour = range(0, 24);
$valid_minute = range(0, 59);
$valid_second = range(0, 59);
list($str, $year, $month, $day, $hour, $minute, $second) = $matches;
foreach(array('year', 'month', 'day', 'hour', 'minute', 'second') as $part)
{
if (!in_array($$part, ${'valid_'.$part}))
return false;
}
return checkdate($month, $day, $year); // this will reject absurd values like February 30 or April 31
}
編集:私はstrtotime
を信用していません。たとえば、「タイムスタンプの有効範囲は、1901年12月13日20:45:54 UTCから2014年1月19日03:14:07 UTCまでです。 (strtotime
マニュアルページから引用)。この範囲外の日付を受け入れる場合はどうすればよいですか?私には、strtotime
は未知のブラックボックスです。私を間違えないでください:私はそれを、最終的に使用します!しかし、私はこのケースではないでしょう。
1
は、日付の正規表現と時間の正規表現との間に文字「T」を入れて、この正規表現を試してみてください:
(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})
1
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$
これは、それが適切な形式でありますようになります。次に、strtotimeのような関数を呼び出して、それが有効なdatetimeであることを確認する必要があります。
1
システムのロケールに応じて、人/アプリケーションの日付文字列が異なる形式で入力されるため、実際には必要ではないと思います。
最も効果的なのは、UNIX_TIMESTAMPを指定された日付から取得し、有効なものであるかどうかを確認することです。
例:
$date1 = "2011-02-23T13:04:41";
$date2 = str_replace("T", " ", $date1); // removing the T
$date3 = strtotime($date2);
今、あなたはちょうどそれが有効なのですか、あなたに必要な条件を満たしている場合は、元の入力された日付も同様でチェックし、$ date3 ...で動作します。
念のためにあなたは、すべてこの混乱を必要としないで、プレーン行く:時間の値が有効な日付を表す場合、このチェック
(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}) // pseudo - not tested
1
関連する問題
- 1. phpの日付と時刻の正規表現
- 2. OCaml正規表現日付時間
- 3. PHP +正規表現
- 4. 正規表現PHP
- 5. 正規表現PHP
- 6. PHP |正規表現
- 7. PHP正規表現
- 8. 正規表現PHP
- 9. PHP正規表現
- 10. PHP正規表現
- 11. PHP正規表現
- 12. PHP - 正規表現
- 13. JavaScriptの正規表現をPHPの正規表現にする
- 14. MVC 4正規表現 - 日
- 15. 正規表現誕生日の日付時刻
- 16. PHP正規表現に相当するJavascriptの正規表現
- 17. PHPのリバース正規表現
- 18. PHPの正規表現アナライザ?
- 19. PHPの正規表現
- 20. PHP正規表現のヘルプ
- 21. PHPの正規表現式
- 22. preg_matchのPHP正規表現
- 23. PHPの正規表現
- 24. PHPの正規表現
- 25. PHPの正規表現
- 26. PHPの正規表現値
- 27. PHPの正規表現
- 28. PHP正規表現のHTML
- 29. MyBB - PHPの正規表現
- 30. PHPの正規表現今
これは、 '1234-56-78T90:98:76'のようなものを許可するため、最初のステップです。 –
ありがとうございます。検証のもう一つの部分はそれほど問題ではありません。 –