首頁  >  文章  >  後端開發  >  PHP 日期驗證:正規表示式無法匹配嗎?

PHP 日期驗證:正規表示式無法匹配嗎?

DDD
DDD原創
2024-10-23 06:08:30240瀏覽

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,則表示輸入中存在潛在錯誤。隨後,它使用 checkdate 驗證日期。

以上是PHP 日期驗證:正規表示式無法匹配嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn