찾다

 >  Q&A  >  본문

PHP 문자열이 정수로만 구성되어 있는지 확인

사용자가 입력한 일부 데이터의 유효성을 검사하기 위해 PHP 코드를 작성 중입니다. 그 중 하나는 정수이고 $_REQUEST["age"]来获取它,当我用gettype($_REQUEST["age"]) == "integer"is_int($_REQUEST["age"])检查这个值是否为整数时,两者都返回false,但是当我使用is_numeric($_REQUEST["age"])를 사용하면 true를 반환합니다. 매개변수 값이 정수인지, 처음 두 함수를 올바르게 사용하고 있는지, 아니면 뭔가 빠졌는지 확인하고 싶습니다.

감사합니다

참고: 출력을 시도합니다 gettype($_REQUEST["age"]),它给我返回string

P粉788765679P粉788765679458일 전654

모든 응답(2)나는 대답할 것이다

  • P粉293550575

    P粉2935505752023-09-22 16:02:18

    으아악

    회신하다
    0
  • P粉107772015

    P粉1077720152023-09-22 09:25:38

    짧은 버전:

    사용 ctype_digit($_REQUEST['age'])

    상세 버전:

    문제는 gettype时,$_REQUEST返回一个字符串。即使该字符串在语义上是一个整数,比如16을 사용해도 여전히 정수형 변수가 아닌 문자열형 변수라는 점입니다. 이 두 테스트에서 서로 다른 결과를 얻는 이유는 서로 다른 것을 테스트하기 때문입니다.

    • is_numeric测试一个字符串是否包含一个"可选符号、任意数量的数字、可选的小数部分和可选的指数部分",根据PHP文档。在你的情况下,该字符串只包含数字,所以测试返回True.
    • is_int测试变量的类型是否为整数 - 但它不会是整数,因为它是由$_REQUEST반환되었습니다.

    그래서 is_numeric返回Trueis_int返回False的原因:该字符串只包含数字(所以是"numeric"),但在技术上仍然是一个字符串类型,而不是整数类型(所以不是"int")。当然,is_numeric对于整数测试来说是不够的,因为如果字符串有小数或使用科学计数法,它将返回True은 숫자이지만 정수는 아닙니다.

    $_REQUEST이 정수인지 테스트하려면 기술 유형에 관계없이 문자열의 모든 문자가 숫자인지(따라서 전체 문자열이 정수인지) 테스트할 수 있습니다. 이를 위해 ctype_digit을 사용할 수 있습니다:

    으아악

    이 기능은 16返回True,但对16.516e0不返回True에 적용됩니다. - 정수가 아닌 숫자에서 정수를 필터링할 수 있습니다.

    회신하다
    0
  • 취소회신하다