3

PHP関数checkdate()を見つけましたが、不思議なことに、 の形式のデータしか受け入れないようですint $month , int $day , int $year。ただし、日付を文字列 ( example ) として渡している"2012-06-13"ので、この回避策を考え出しました。これは、そのような形式で入力された日付のみを許可するためです。残念ながら、これは安全ではなく、問題に対する適切なアプローチではないと感じています。

function CheckAdditional($value)
{
    $data = explode("-", $value);

    return checkdate($data[1], $data[2], $data[0]);
}

質問: 日付が有効かどうかを確認するより良い方法はありますか?

4

6 に答える 6

2

あなたが試すことができます:

function checkDateFormat($date){  
//match the format of the date  
if (preg_match ("/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/", $date, $parts))  {    
    //check weather the date is valid of not        

    if(checkdate($parts[2],$parts[3],$parts[1]))          
       return true;        
    else         
       return false;  
    }  
else    
return false;}

クレジット: http://roshanbh.com.np/2008/05/date-format-validation-php.html

于 2012-06-13T15:56:59.877 に答える
1
<?php

function CheckAdditional($value)
{
    return date('Y-m-d', strtotime($value)) == $value;
}

?>

私と私の答えを手伝ってくれた人々の両方からのいくつかのテストの後、私はこれを思いつきました.

于 2012-06-18T07:16:20.860 に答える
1

安全のためにできること

date("Y-m-d", strtotime($yourdatestr));

そうすれば、形式が間違っていても、ほとんどの場合は修正されます。

于 2012-06-13T15:59:09.043 に答える
1
$jahr = (int) $_POST['jahr'];
$monat =  (int) $_POST['monat'];
$tag = (int) $_POST['tag'];
$datum = "$tag. $monat. $jahr";

if (checkdate($monat, $tag, $jahr) == FALSE) {
    $allesok = false;
    $fehlermeldung .= "<p class='fehler'>Ungültiges Datum $datum!</p>";
}
于 2017-06-10T10:57:49.523 に答える
0

ユーザー入力が 1 つの形式でのみ有効になるように制限する場合 (ローカリゼーションについてはどうですか?)、正規表現関数を使用するか、入力を "-" で分割して、自分で入力を解析し、それが3 桁の値の配列…</p>

于 2012-06-13T15:58:38.613 に答える