通过传递变量 PHP 给 filter_var() 过滤器(filter_var() 期望参数 2 很长,字符串给定)
Give filter_var() filter by passing a variable PHP (filter_var() expects parameter 2 to be long, string given)
现在我正在尝试使用 filter_var() 验证一些邮政数据。我想从我的数据库中获取与每个输入相关的过滤器。因此,如果输入应按 EMAIL 过滤,则变量将包含 FILTER_VALIDATE_EMAIL。然后将像这样传递:
foreach($this->postdata as $key => $input){
if(!((empty($requirements[$key][1])) || $requirements == 'allowed')){
if(filter_var($input, $requirements[$key][1]) === false){
$errors = true;
}
}
}
$postdata 看起来像这样:
array (size=4)
'personer_navn' =>
array (size=1)
0 => int 0
'personer_alder' =>
array (size=1)
0 => int 1
'personer_kon' =>
array (size=2)
0 => int 2
1 => int 3
'personer_by' =>
array (size=1)
0 => int 4
$requirements 看起来像这样:
array (size=4)
'personer_navn' =>
array (size=4)
0 => string 'string' (length=6)
1 => string 'FILTER_VALIDATE_EMAIL' (length=21)
2 => string '' (length=0)
3 => string '' (length=0)
'personer_alder' =>
array (size=4)
0 => string 'int' (length=3)
1 => string 'FILTER_VALIDATE_EMAIL' (length=21)
2 => string '' (length=0)
3 => string '' (length=0)
'personer_kon' =>
array (size=4)
0 => string 'allowed' (length=7)
1 => string 'allowed' (length=7)
2 => string 'allowed' (length=7)
3 => string 'allowed' (length=7)
'personer_by' =>
array (size=4)
0 => string 'string' (length=6)
1 => string 'FILTER_VALIDATE_EMAIL' (length=21)
2 => string '' (length=0)
3 => string '' (length=0)
同样,问题似乎是将 $requirements[$key][1]
传递给 filter_var() 函数。
感谢任何帮助。
FILTER_VALIDATE_EMAIL 不能用作字符串。尝试不带引号使用它。可以在 documentation
中找到示例
将修复错误的简单更改
foreach($this->postdata as $key => $input){
if(!((empty($requirements[$key][1])) || $requirements == 'allowed')){
if(filter_var($input, constant( $requirements[$key][1]) ) === false){
$errors = true;
}
}
}
constant
函数 returns 字符串过滤器的 (integer
) 值。
也阅读 P.P-s 答案。
现在我正在尝试使用 filter_var() 验证一些邮政数据。我想从我的数据库中获取与每个输入相关的过滤器。因此,如果输入应按 EMAIL 过滤,则变量将包含 FILTER_VALIDATE_EMAIL。然后将像这样传递:
foreach($this->postdata as $key => $input){
if(!((empty($requirements[$key][1])) || $requirements == 'allowed')){
if(filter_var($input, $requirements[$key][1]) === false){
$errors = true;
}
}
}
$postdata 看起来像这样:
array (size=4)
'personer_navn' =>
array (size=1)
0 => int 0
'personer_alder' =>
array (size=1)
0 => int 1
'personer_kon' =>
array (size=2)
0 => int 2
1 => int 3
'personer_by' =>
array (size=1)
0 => int 4
$requirements 看起来像这样:
array (size=4)
'personer_navn' =>
array (size=4)
0 => string 'string' (length=6)
1 => string 'FILTER_VALIDATE_EMAIL' (length=21)
2 => string '' (length=0)
3 => string '' (length=0)
'personer_alder' =>
array (size=4)
0 => string 'int' (length=3)
1 => string 'FILTER_VALIDATE_EMAIL' (length=21)
2 => string '' (length=0)
3 => string '' (length=0)
'personer_kon' =>
array (size=4)
0 => string 'allowed' (length=7)
1 => string 'allowed' (length=7)
2 => string 'allowed' (length=7)
3 => string 'allowed' (length=7)
'personer_by' =>
array (size=4)
0 => string 'string' (length=6)
1 => string 'FILTER_VALIDATE_EMAIL' (length=21)
2 => string '' (length=0)
3 => string '' (length=0)
同样,问题似乎是将 $requirements[$key][1]
传递给 filter_var() 函数。
感谢任何帮助。
FILTER_VALIDATE_EMAIL 不能用作字符串。尝试不带引号使用它。可以在 documentation
中找到示例将修复错误的简单更改
foreach($this->postdata as $key => $input){
if(!((empty($requirements[$key][1])) || $requirements == 'allowed')){
if(filter_var($input, constant( $requirements[$key][1]) ) === false){
$errors = true;
}
}
}
constant
函数 returns 字符串过滤器的 (integer
) 值。
也阅读 P.P-s 答案。