文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP is_numeric()函数详解,PHP判断变量是否为数字或数字字符串,is_numeric()绕过

2023-09-05 18:07

关注

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》

is_numeric

is_numeric() 可以检测「变量」是否为「数字」或数字字符串。

语法

bool is_numeric( $var )

参数

返回值

布尔类型

一、基本使用

「整形」「浮点型」以及他们的字符串形式,都返回 true

实例:

var_dump(is_numeric(1));var_dump(is_numeric(1.1));var_dump(is_numeric('1'));var_dump(is_numeric('1.1'));

输出:

bool(true)bool(true)bool(true)bool(true)

二、16进制绕过

is_numeric() 会对「16进制」(0x开头)返回 true 。数值型和字符型都可以。

实例:

var_dump(is_numeric(0x7e));var_dump(is_numeric('0x7e'));

输出:

bool(true)bool(true)

绕过思路:把 '1 or 1' 这类payload转成16进制,再传给 is_numeric() ,实现绕过。


三、科学计数法绕过

is_numeric() 会对「科学计数法」(0e开头)返回 true 。数值型和字符型都可以。

并且,0e开头的值,强制转换成int类型后,都是1。

实例:

var_dump(is_numeric(0e123));var_dump(is_numeric('0e123'));echo (int)is_numeric(0e123).PHP_EOL;echo (int)is_numeric(0e9999).PHP_EOL;echo (int)is_numeric('0e123');

输出:

bool(true)bool(true)111

绕过思路:遇到 (int)is_numeric($_GET['a']) 这类情况时,可以使用传入 0exxx 格式的参数来绕过。

四、字符串

「数字」「字母」组合的字符串,无论是否以数字开头,都返回 false

实例:

var_dump(is_numeric('1a'));var_dump(is_numeric('a1'));

输出:

bool(false)bool(false)

五、is_int()和is_numeric()的区别

is_int() is_numeric() 都可以 “判断变量是否为数字”。

is_int() 必须是「整形」才返回 true ,其他类型都返回 false
is_numeric() 「浮点型」「数值型字符串」也返回 true

实例:

var_dump(is_numeric(1.1));var_dump(is_int(1.1));var_dump(is_numeric('1'));var_dump(is_int('1'));

输出:

bool(true)bool(false)bool(true)bool(false)

六、type_digit()和is_numeric()的区别

type_digit() is_numeric() 都可以 “判断变量是否为数字”。

type_digit() 只有在字符串中全是「数字」才会返回 true ,整型、浮点型、甚至包含正负符号的值都返回 false
is_numeric() 对整型、浮点型、以及包含正负符号的值都返回 true

实例:

var_dump(is_numeric('1'));var_dump(ctype_digit('1'));var_dump(is_numeric(1));var_dump(ctype_digit(1));var_dump(is_numeric('1.1'));var_dump(ctype_digit('1.1'));var_dump(is_numeric('-1'));var_dump(ctype_digit('-1'));var_dump(is_numeric('+1'));var_dump(ctype_digit('+1'));

输出:

bool(true)bool(true)bool(true)bool(false)bool(true)bool(false)bool(true)bool(false)bool(true)bool(false)

来源地址:https://blog.csdn.net/wangyuxiang946/article/details/131211111

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯