preg_match で ^ が何をしているのかよくわかりません。
if (preg_match('~^(\d\d\d\d)(-(\d{1,2})(-(\d{1,2}))?)?$~', trim($date), $dateParts)) {
echo the $dateparts and do some magic with them
} else {
tell me the date is formatted wrong
}
私が見ているように、これは $date が 4 桁 - 1 桁または 2 桁 - 1 桁または 2 桁の形式と一致するかどうかを確認するために探しています
一致する場合、IF ステートメントは日付を表示します。一致しない場合、日付の形式が正しくないというエラーが発生します。
ただし、年 $date = '1977' を他に何も (日も月もなしで) 渡すだけでも、true として通過し、日付部分が表示されます。エラーがスローされると思いますか?
誰かが正規表現に欠けているものを指摘できますか? 最後の ^ またはおそらく ?$ は、その一部のみが一致することを意味する可能性があると思いますか?