PHP is_numeric()函数用法详解

 更新时间:2023年07月27日 10:48:35   作者:士别三日wyx  
is_numeric()函数是PHP中的内置函数,用于检查传入函数中作为参数的变量是数字还是数字字符串,该函数返回一个布尔值,本文就给大家讲讲PHP is_numeric()函数使用方法,需要的朋友可以参考下

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

语法

bool is_numeric( $var )

参数

  • $var :需要检测的变量

返回值

布尔类型

  • 返回 true :整形、浮点型、整形字符串、浮点型字符串
  • 其他 false

一、基本使用

「整形」、「浮点型」以及他们的字符串形式,都返回 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)
1
1
1

绕过思路:遇到 (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)

到此这篇关于PHP is_numeric()函数用法详解的文章就介绍到这了,更多相关PHP is_numeric()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • [PHP]实用函数2

    [PHP]实用函数2

    [PHP]实用函数2...
    2007-11-11
  • PHP中使用gettext来支持多语言的方法

    PHP中使用gettext来支持多语言的方法

    开发多语言的Web应用是一件非常困难的事,各个国家的字符集的编码方式、货币符号、日期格式、数字格式、文字表现都各不相同.
    2011-05-05
  • php创建多级目录代码

    php创建多级目录代码

    php的多级目录实现代码比其它的asp要方便
    2008-06-06
  • PHP操作MySQL的常用代码段梳理与总结

    PHP操作MySQL的常用代码段梳理与总结

    MySQL时我们常会使用的数据库语言,关于PHP操作MySQL的常用代码段小编汇总整理了一遍,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以收藏下
    2021-09-09
  • 详解PHP实现执行定时任务

    详解PHP实现执行定时任务

    这篇文章主要介绍了PHP实现执行定时任务的具体实现代码,需要的朋友可以参考下
    2015-12-12
  • 10款实用的PHP开源工具

    10款实用的PHP开源工具

    这篇文章主要介绍了10款实用的PHP开源工具,这些PHP开源工具改善了PHP开发人员的工作流程,使他们的开发任务更简便和快捷,需要这方面资源的朋友请阅读本文。
    2015-10-10
  • php基于curl实现的股票信息查询类实例

    php基于curl实现的股票信息查询类实例

    这篇文章主要介绍了php基于curl实现的股票信息查询类,结合完整实例形式分析了php使用curl调用API接口实现股票信息查询功能的相关操作技巧,需要的朋友可以参考下
    2016-11-11
  • php实现替换手机号中间数字为*号及隐藏IP最后几位的方法

    php实现替换手机号中间数字为*号及隐藏IP最后几位的方法

    这篇文章主要介绍了php实现替换手机号中间数字为*号及隐藏IP最后几位的方法,涉及php字符串替换与正则操作的相关技巧,需要的朋友可以参考下
    2016-11-11
  • PHP include_path设置技巧分享

    PHP include_path设置技巧分享

    当时候函数include(),require(),fopen_with_path()函数来寻找文件时候.在不设置include_path的情况下,这些函数打开文件时候默认的是以web根目录去寻找.当设置include_path以后,这些php函数就会先在指定的include_path目录下面去搜索寻找
    2011-07-07
  • php Rename 更改文件、文件夹名称

    php Rename 更改文件、文件夹名称

    rename()命令可以实现文件文件夹的更名操作,而且还可以实现文件、文件夹的移动操作
    2011-05-05

最新评论