0

少しグーグルで調べましたが、どのキーワードを使用すればよいかわかりません。

ユーザーの生年月日を保存しています。形式が YYYY-MM-DD であることを確認したいと思います。
私は次のようなことを考えています:

if(!ctype_digit(str_replace("-", "", $dob)) || strlen(str_replace("-", "", $dob)) != 8)
{
   echo "Incorrect format: date of birth";
}


このためには、strlen() を使用して 3 文字のみを置き換える必要があります。3 より大きいか小さい場合は、不正な形式をエコーし​​ます。どうすればこれを達成できますか? それとももっと良い方法がありますか?

4

3 に答える 3

3

正規表現を使用するのはどうですか?

if ( !preg_match( "/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/", $dob) )
{ 
    echo "Invalid date.";
}
于 2013-03-07T19:22:05.540 に答える
2

多くの例を見つけるには、「検証日」を検索するか、場合によっては、「php検証日付形式」を試してください。ほとんどの例が正規表現で解決されることがわかります。これがこの種のチケットです。物事の。Reg Expressionsは、日付、電子メールアドレスの形式、最小限の要件(たとえば、少なくとも8文字、少なくとも1つの数字と1つの大文字など)を満たすパスワードの入力を検証するのに役立ちます。

そのような例の1つを次に示します。

if(preg_match('/\d{4}-\d{2}-\d{2}/',$date)){
   // good date
}else{
   // bad date
}
于 2013-03-07T19:29:24.513 に答える
2

また、日付が実際の日付であることを確認する必要があります。実際の日付のように見えるだけではありません。

if (!preg_match("/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/D", $dob))
{ 
    echo 'Invalid date';
}

else
{

    list($year, $month, $day) = explode('-', $dob);

    if (!checkdate((int) $month, (int) $day, (int) $year))
    {
        echo 'Invalid date';
    }

}

結局、受け入れたくないのです1988-06-31

于 2013-03-07T19:30:34.590 に答える