ホームページ >バックエンド開発 >PHPチュートリアル >PHP ISO 日付正規表現が失敗するのはなぜですか?どうすれば修正できますか?

PHP ISO 日付正規表現が失敗するのはなぜですか?どうすれば修正できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-29 12:22:10410ブラウズ

Why is My PHP ISO Date Regular Expression Failing, and How Can I Fix It?

ISO 日付パターンの一致が失敗するのはなぜですか?

前方指定が欠落しているため、指定された正規表現が ISO 形式の日付と正しく一致しません。パターンの先頭と末尾にスラッシュ (「/」) を付けます。これらの区切り文字は、PHP の正規表現構文において重要です。修正されたパターンは次のようになります。

/^(?P<year>[0-9]{4})-(?P<month>[0-9]{2})-(?P<day>[0-9]{2}) (?P<hour>[1-2]{1}\d{1}):(?P<min>[0-5]{1}\d{1}):(?P<sec>[0-5]{1}\d{1})$/

このパターンは、年、月、日、時、分、秒の 6 つのキャプチャ グループを定義します。

代替アプローチ: DateTime を使用するClass

正規表現を使用することもできますが、より洗練された解決策は、PHP の DateTime を使用することです。 class:

function validateDate($date, $format = 'Y-m-d H:i:s')
{
    $d = DateTime::createFromFormat($format, $date);
    return $d && $d->format($format) == $date;
}

この関数は日付文字列とオプションの形式を受け入れます。 createFromFormat メソッドを使用して DateTime オブジェクトを作成し、生成されたオブジェクトが有効かどうか、および元の日付と一致するかどうかを確認します。

validateDate 関数は、日付を検証するためのより堅牢で汎用性の高い方法を提供します。幅広い形式をサポートし、さまざまなレベルの粒度で日付を検証できます。

以上がPHP ISO 日付正規表現が失敗するのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。