任何人都可以解释一下,为什么我会收到非常奇怪的警告:
filter_input() expects parameter 1 to be long, string given
Run Code Online (Sandbox Code Playgroud)
在执行代码时,这是我班级的一部分,看起来非常好:
public static function Input($type, $data, $filter = 'FILTER_SANITIZE_SPECIAL_CHARS')
{
$type = 'INPUT_' . $type;
return filter_input($type, $data, $filter);
}
Run Code Online (Sandbox Code Playgroud)
如果我将其更改为,例如:
return filter_input(INPUT_POST, $data, $filter);
然后警告去:
filter_input() expects parameter 3 to be long.
如果我使用的话,一切正常:
return filter_input(INPUT_POST, $data, FILTER_SANITIZE_SPECIAL_CHARS);
我在PHP上意识到:filter_input - 手册在描述中说明:
描述
mixed filter_input ( int $type , string $variable_name [, int $filter = FILTER_DEFAULT [, mixed $options ]] )
Run Code Online (Sandbox Code Playgroud)
参数
type
One of INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, or INPUT_ENV.
Run Code Online (Sandbox Code Playgroud)
filter_input ( int $type ,-当既不INPUT_GET也不INPUT_POST和等是一个整数.filter_input使用变量?你应该使用的是常数.这些常量具有整数值.所以文档完全正确,INPUT_GET是一个整数.试试var_dump(INPUT_GET).
如果需要从字符串中获取常量值,请使用constant():
echo constant('INPUT_' . $type);
Run Code Online (Sandbox Code Playgroud)