filtering — дать filter_var () фильтр, передав переменную PHP (filter_var () ожидает, что параметр 2 будет длинным, задана строка)

Прямо сейчас я пытаюсь проверить некоторые постданные с помощью 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

И требования $ выглядят так:

    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 ().

Любая помощь приветствуется.

1

Решение

Простое изменение, которое исправит ошибку

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 функция возвращает (integer) значение фильтра, который является строкой.

прочитайте ответ P.P-s тоже.

1

Другие решения

FILTER_VALIDATE_EMAIL не должен использоваться в качестве строки. Попробуйте использовать его без кавычек. Примеры можно найти в документация

2

По вопросам рекламы [email protected]