私はこのコードをWebアプリケーションの途中に置いています。PHP preg_matchとチェックデートを組み合わせた
if (preg_match ("/^[-0-9]/", $strDate) == TRUE)
{
$dateParts = explode("-", $strDate);
if (count($dateParts) === 3)
{
try
{
if (checkdate($dateParts[0], $dateParts[1], $dateParts[2]) === TRUE)
{
return TRUE;
}
}
catch (Exception $e)
{
//purposely blank for now.
}
}
}
周囲のコードは含まれていないため、かなり長いアプリケーションです。まず、$strDate
変数を私はそこに保持されているものを正確に知っています。私はif
ステートメントが始まる直前にそれをエコーすることができます。 $strDate
が有効な日付または 'TBD'の任意の組み合わせである場合、ステートメントは期待どおりに検証されます。この問題は、無効な日付が関数に入るときに発生します。例えば
、
$strDate = '03-01-2017asdf';
この入力で、私はそれをキャッチし、if
の文からそれをキックするpreg_match
を期待します。代わりにtry-exceptを実行し、phpは非形成エラーをスローします。私がここで間違っていることは何ですか?私はそれが私のpreg_match
ステートメントと関係していると確信しています。
あなたは '$'記号を追加してうれしいが、日付パターンは依然として良いかもしれない。 – MaxZoom
そうですが、日付一致をパターンに折りたたむことが次のステップでした。私はちょうどこの部分を最初に働かせたいと思った。これは完全に機能しました!ありがとう!私はそれがちょっとしたエラーだったと知っていて、それを理解できませんでした。ここや周りのWeb上で検索した後、私はあきらめて、実際に質問しました。 –
@MaxZoom、あなたは私の答えの最後まで読みましたか? ;-) – trincot