문제
날짜 필드를 "검증"하려고합니다. 나는 숫자 숯과 캐릭터 만 허용하고 싶습니다.
$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-]+$/";
시도해보십시오
제휴하지 않습니다 StackOverflow