문제

날짜 필드를 "검증"하려고합니다. 나는 숫자 숯과 캐릭터 만 허용하고 싶습니다.

 $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"를 검색하려고하면 괜찮지 않습니다. 그러나 "1960/"를 검색하면 출력이 정상입니다. 나는 이유를 이해하지 못한다.

사용자 만 "0-9"및 "-"chars가 필드를 채우는 지 확인하도록 수정할 수 있도록 도와 주시겠습니까?

고맙습니다

도움이 되었습니까?

해결책

표현식을 "고정"해야합니다. 즉, 문자열의 시작 및 문자열 $ 마커의 끝을 삽입해야합니다.

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

그러나 preg_match는 날짜를 검증하는 방법이 아닙니다. 예를 들어, 위는 "99999999"등을 허용합니다.

다른 팁

user187291의 Regex 날짜 문자 만 일치합니다. 날짜를 검증하는 빠른 방법은이를 통해 타임 스탬프로 변환하는 것입니다. strtotime():

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

시도해보십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top