ホームページ  >  記事  >  バックエンド開発  >  PHP の日付検証: 正規表現は一致しませんか?

PHP の日付検証: 正規表現は一致しませんか?

DDD
DDDオリジナル
2024-10-23 06:08:30239ブラウズ

PHP Date Validation: Can't the Regular Expression Match?

PHP 日付検証: 正規表現のトラブルシューティング

正規表現を使用して PHP で日付を検証しようとしていますが、問題に遭遇しています。コードを分析して、より堅牢なソリューションを提供しましょう。

指定した正規表現、%A(0[1-9]|1[012])[- /.](0[1-9] |[12][0-9]|3[01])[- /.](19|20)ddz% は、MM/DD/YYYY 形式の検証には正しいようです。ただし、日付を照合するために使用しているコードが正しくありません。 preg_match の結果を $_POST['birthday'] に割り当てていますが、これは意図したものではありません。

checkdate を使用した検証の改善

正規表現を使用する場合は、PHP の checkdate 関数を利用して検証プロセスを簡素化できます。この関数は、月、日、年を個別のパラメータとして受け取り、日付が有効かどうかを示すブール値を返します。

<code class="php">$test_date = '03/22/2010';
$test_arr = explode('/', $test_date);
if (checkdate($test_arr[0], $test_arr[1], $test_arr[2])) {
    // valid date ...
}</code>

このコードでは、/ で区切られた日付文字列を配列に変換します。月、日、年のコンポーネント。次に、これらのコンポーネントを checkdate に渡して、日付の有効性を検証します。

入力検証の追加レイヤー

入力検証を強化するには、次のコードを検討してください。

<code class="php">$test_date = '03/22/2010';
$test_arr = explode('/', $test_date);
if (count($test_arr) == 3) {
    if (checkdate($test_arr[0], $test_arr[1], $test_arr[2])) {
        // valid date ...
    } else {
        // problem with dates ...
    }
} else {
    // problem with input ...
}</code>

このアプローチでは、まず、$test_arr 内の要素を数えることによって、入力文字列に正確に 3 つのコンポーネント (月、日、年) が含まれているかどうかを確認します。カウントが 3 と異なる場合は、入力に潜在的なエラーがあることを示します。その後、checkdate を使用して日付を検証します。

以上がPHP の日付検証: 正規表現は一致しませんか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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