語法
返回值
函數種類
內容說明
本函數可將變量轉成整數類型
intval()使用不當的安全漏洞分析
intval函數有個特性
二
代碼如下 復制代碼
PHP_FUNCTION(intval)
{
zval **num
int base;
switch (ZEND_NUM_ARGS()) {
case
if (zend_get_parameters_ex(
WRONG_PARAM_COUNT;
}
base =
break;
case
if (zend_get_parameters_ex(
WRONG_PARAM_COUNT;
}
convert_to_long_ex(arg_base)
base = Z_LVAL_PP(arg_base)
break;
default:
WRONG_PARAM_COUNT;
}
RETVAL_ZVAL(*num
convert_to_long_base(return_value
}
Zend/zend_operators
……
case IS_STRING:
strval = Z_STRVAL_P(op)
Z_LVAL_P(op) = strtol(strval
STR_FREE(strval)
break;
當intval函數接受到字符串型參數是調用convert_to_long_base()處理
函數原型如下
long int strtol(const char *nptr
這個函數會將參數nptr字符串根據參數base來轉換成長整型數
流程為
strtol()會掃描參數nptr字符串
那麼當intval用在if等的判斷裡面
三
代碼如下 復制代碼
<?php
$o =
for($a =
$o +=
echo
if(intval($o)){
print(
}else{
print(
}
}?>
輸出結果
intval(
intval(
intval(
intval(
intval(
intval(
intval(
intval(
intval(
intval(
intval(
intval(
intval(
intval(
intval(
intval(
intval(
intval(
intval(
……
php intval 與 int 的區別
代碼如下 復制代碼
$t =
echo gettype((int)($t))
echo
echo gettype(intval($t))
//輸出結果
$t =
echo gettype((int)($t))
echo
echo gettype(intval($t))
//結果 integer integer value:
$string=
$string
echo
$string
echo $string
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26835.html