質問
私は、日付フィールドを「検証」してみてください。私が唯一できるようにしたい、数値の文字と - 。文字
$born_date=$_POST['date'];
$goodchars = array("1","2","3","4","5","6","7","8","9","0","-");
$char_re_good = '/['.preg_quote(join('', $goodchars), '/').']/';
if (!(preg_match($char_re_good, $born_date))) {
echo "not ok, contain INVALID chars"
}else{
echo "ok, contain valid chars"
}
私は「1960」のために[OK]を検索してみてください。私はその後、「asdfg」を検索するにはOKではないしよう。 私は「1960 /」を検索した場合でも、出力はOKです。私は理由を理解いけません。
あなたは私の場合は、ユーザーを確認するために修正する助けてもらえのみ「0-9」と「 - 」。文字がフィールドに必要事項を記入
ありがとうございます。
解決
あなたはつまり、あなたの表現「アンカー」文字列$マーカーの文字列の先頭^と終わりを挿入する必要があります。
preg_match('/^[0-9-]+$/', $born_date);
ただし、するpreg_matchは、日付を検証する方法ではありません。例えば、上記の「99999999」など
を受け入れます他のヒント
user187291の正規表現には、あなたが望むものである、日付のみの文字と一致します。
strtotime()
を試してみて、経由のタイムスタンプに変換することです>
if (strtotime($date_str)!==false) {
// The date is valid.
}
$char_re_good = "/^[0-9-]+$/";
という試してみて。
所属していません StackOverflow