如何检查字符串是否由PHP中的整数组成

时间:2013-03-16 10:51:16

标签: php

我正在编写php代码来验证用户输入的一些数据,其中一个是整数,我使用$_REQUEST["age"]来获取它,当我检查这个值是否为{{1}的整数时和gettype($_REQUEST["age"] == "integer"都给我假,但是当我使用is_int($_REQUEST["age"])时,我就是真的。我想检查参数的值是否为整数,我是正确使用前2个函数还是缺少某些东西?

Thakns

注意:我尝试输出is_numeric($_REQUEST["age"])它给了我gettype($_REQUEST["age"])

2 个答案:

答案 0 :(得分:7)

简短版:

使用ctype_digit($_REQUEST['age'])

长版:

您使用gettype时发现的问题是$_REQUEST会返回字符串。即使该字符串是一个整数语义,如16,它仍然是字符串类型而不是整数类型变量。您从两个测试中获得了不同的结果,因为他们测试了不同的东西:

  • is_numeric测试字符串是否包含"可选符号,任意数量的数字,可选的小数部分和可选的指数部分"根据{{​​3}}。在您的情况下,字符串仅包含数字,因此测试返回True
  • is_int测试变量的类型是否为整数 - 它不会是,因为$_REQUEST返回它。

为什么is_numeric返回Trueis_int返回False的原因:字符串只包含数字(因此"是数字" )但技术上仍然有一个字符串类型,而不是一个整数类型(所以"不是' t")。当然,is_numeric对于整数测试来说还不够,因为如果字符串有小数或使用科学记数法,它将返回True,即数字但不是整数。

要测试$_REQUEST是否为整数,无论​​技术类型如何,您都可以测试字符串中的所有字符是否为数字(因此字符串整数是整数)。为此,您可以使用PHP docs

ctype_digit($_REQUEST['age'])

这将为True返回16,但不会返回16.516e0 - 从数字非整数中删除整数。

答案 1 :(得分:0)

<?
     if(intval($_REQUEST["age"]) > 0):
        echo 'Ineger';
     else:
        echo 'something else';
     endif;
?>