PHP - Как проверить, допустим ли входной фильтр? - PullRequest
2 голосов
/ 10 мая 2019

У меня есть функция, которая принимает константу фильтра для filter_input в качестве необязательного параметра. Можно ли убедиться, что значение строки является допустимой константой фильтра PHP, возможно, со встроенной функцией PHP?

Я знаю, что один из способов - создать собственный массив всех констант фильтра и проверить это, но я надеялся на более простой или лучший способ.

Ответы [ 2 ]

2 голосов
/ 10 мая 2019

Вы можете проверить по списку фильтров:

$valid = in_array($filter, filter_list(), true);

Где $filter содержит пользовательское значение фильтра и $valid результат в виде логического значения (true, если он действителен, false, если он недействителен).

Подробнее см. filter_list() в руководстве по PHP.

1 голос
/ 10 мая 2019

Мне удалось добиться этого с помощью встроенной PHP-функции get_defined_constants (), в которой перечислены все предопределенные константы PHP.

Решение:

Приведенный ниже код сохранит все разрешенные фильтры в массив и позволит вам проверить правильность любого фильтра с помощью функции check_filter ().

<?php

$constants = get_defined_constants();
$allowed_filters = array();
foreach ($constants as $c => $val)
    if (substr($c, 0, 7) == 'FILTER_')
        $allowed_filters[$c] = 1;

function check_filter($filter_name, $allowed_filters) { return isset($allowed_filters[$filter_name]); }

var_dump(check_filter('FILTER_SANITIZE_EMAIL', $allowed_filters)); // true
var_dump(check_filter('FILTER_TEST', $allowed_filters)); // false
var_dump(check_filter('PHP_VERSION', $allowed_filters)); // false, even though constant exists

Надеюсь, это поможет!

...