質問

私は、日付フィールドを「検証」してみてください。私が唯一できるようにしたい、数値の文字と - 。文字

 $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-]+$/";

という試してみて。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top