一篇文章带你搞定php里面intval函数的应用

当我们需要将一个变量转化成整型的时候,可以使用 intval() 函数,它可以把变量的值转换为整数类型。intval() 函数的基本语法如下:


intval ( mixed $var [, int $base = 10 ] ) : int

有一点很重要,intval()用于获取变量的整数值。
intval()不能用于object和array,否则会产生E_NOTICE错误并返回1。

其中 $var 表示需要被转换的变量,$base 表示需要转换的进制数,缺省为10进制,即默认情况下,$base 的值为10。

下面我们来看一下 intval() 函数的用法和一些注意事项:

转换规则

  • 如果 $var 是一个浮点数,intval() 函数会将其舍弃小数部分并返回整数部分。
  • 如果 $var 是一个字符串,intval() 函数会尝试将其转换为整数。如果字符串以数字开头,则转换为对应的整数;否则返回0。
  • 如果 $var 是一个布尔值,intval() 函数会将其转换为整数。true 转换为1,false 转换为0。
  • 如果 $var 是一个数组或对象,intval() 函数会返回0。

进制转换

除了将十进制数转化为整数之外,intval() 函数还可以实现不同进制之间的转换(2进制、8进制、16进制)。在这种情况下,需要显式指定 $base 参数的值。例如:

echo intval('1100', 2); // 12(二进制)

echo intval('14', 8); // 12(八进制)

echo intval('C', 16); // 12(十六进制)

还有一个比较特殊,

如果intval第二个参数是0,,那么你就可以自由根据你的需求去谢你需要的进制

比如

?c=0x117c(十六进制)

?c=010574(八进制)

其实就是进制表示的方法

注意事项

  • intval() 函数只能对整数类型的字符串进行转换,如果字符串中包含非数字字符将会被转化为0。
  • 当 $var 参数是一个对象时,如果该对象没有 __toString() 方法,则会报错并返回0。
  • 当 $var 参数是一个数组时,intval() 函数只会转换其第一个元素。

综上所述,intval() 函数可以将变量转换为整型,并可以实现不同进制之间的转换。但在使用过程中需要注意一些细节,以避免出现意外情况。

例题(1):

include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
    $num = $_GET['num'];
    if($num==="4476"){
        die("no no no!");
    }
    if(intval($num,0)===4476){
        echo $flag;
    }else{
        echo intval($num,0);
    }
}

既然学会了,那就做道题目练习下,看知识是否牢固

这里要求num强等于4476,又不能直接相等,那就?num=4476akdskljd

例题二:


include("flag.php");
highlight_file(__FILE__);

if(isset($_GET['num'])){
    $num = $_GET['num'];
    if(preg_match("/[0-9]/", $num)){
        die("no no no!");
    }
    if(intval($num)){
        echo $flag;
    }
}

;由于preg_match只能处理字符串,不能够处理数组,而且intval遇到数组后直接返回一,所以这里使用数组绕过

?num[]=1

希望本文对大家有所帮助!

一篇文章带你搞定php里面intval函数的应用_第1张图片

你可能感兴趣的:(PHP特性,php,开发语言,安全)