登录  /  注册
检查一个PHP字符串是否仅由整数组成
P粉788765679
P粉788765679 2023-09-21 21:52:44
[PHP讨论组]

我正在编写PHP代码来验证用户输入的一些数据,其中之一是整数,我使用$_REQUEST["age"]来获取它,当我用gettype($_REQUEST["age"]) == "integer"is_int($_REQUEST["age"])检查这个值是否为整数时,两者都返回false,但是当我使用is_numeric($_REQUEST["age"])时返回true。我想要检查参数的值是否为整数,我是否正确使用了前两个函数,还是我漏掉了什么?

谢谢

注意:我尝试输出gettype($_REQUEST["age"]),它给我返回string

P粉788765679
P粉788765679

全部回复(2)
P粉107772015

简短版本:

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

详细版本:

你的问题是,当你使用gettype时,$_REQUEST返回一个字符串。即使该字符串在语义上是一个整数,比如16,它仍然是一个字符串类型,而不是整数类型的变量。你从这两个测试中得到不同的结果是因为它们测试的是不同的东西:

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

为了测试$_REQUEST是否为整数,无论技术类型如何,你可以测试字符串中的所有字符是否都是数字(因此整个字符串是一个整数)。为此,你可以使用ctype_digit

ctype_digit($_REQUEST['age'])

这将对16返回True,但对16.516e0不返回True - 这样就可以将整数从非整数的数字中筛选出来。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号