Gebelik maçı sorun

3 Cevap

Ben bir tarih alanını "doğrulamak" için deneyin. Karakterle - Ben sadece sayısal karakterler ve izin vermek istiyorum.

 $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"
       }

If i try to search for "1960" then OK. If i try to search for " asdfg" then NOT OK. But if i search for "1960/" then the output is OK. I dont understand why.

"-" Karakter alanını doldurmak bana kullanıcı sadece "0-9" ve kontrol etmek değiştirmenize yardımcı olabilir.

Teşekkür ederim

3 Cevap

Eğer yani dize başlangıcını ^ ve string $ belirteçlerin ucunu, ifadenizi "çapa" gerekir.

 preg_match('/^[0-9-]+$/', $born_date);

Ancak, preg_match tarihlerini doğrulamak için bir yol değildir. Örneğin, yukarıda belirtilen "99999999" vb kabul

user187291's regex istediğiniz ne olduğu, sadece tarih karakterleri maç olacak. Bir tarih doğrulamak için hızlı bir yol denemek ve strtotime() üzerinden bir zaman damgası dönüştürmek için:

if (strtotime($date_str)!==false) {
  // The date is valid.
}
$char_re_good = "/^[0-9-]+$/";

Verdikleri bir deneyin