PHP - 如何检查输入过滤器是否有效?
PHP - How to check if an input filter is valid?
我有一个函数将 filter_input
的过滤器常量作为可选参数。是否可以确保字符串的值是一个有效的 PHP 过滤器常量,也许有一个内置的 PHP 函数?
我知道一种方法是创建我自己的所有过滤器常量数组并进行检查,但我希望有一种更简单或更好的方法。
我能够通过使用 get_defined_constants() PHP built-in 函数来实现这一点,该函数列出了所有预定义的 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
希望对您有所帮助!
您可以根据过滤器列表进行验证:
$valid = in_array($filter, filter_list(), true);
其中 $filter
包含用户提供的过滤器值和 $valid
作为布尔值的结果(true
如果有效,false
如果无效)。
有关详细信息,请参阅 PHP 手册中的 filter_list()
。
我有一个函数将 filter_input
的过滤器常量作为可选参数。是否可以确保字符串的值是一个有效的 PHP 过滤器常量,也许有一个内置的 PHP 函数?
我知道一种方法是创建我自己的所有过滤器常量数组并进行检查,但我希望有一种更简单或更好的方法。
我能够通过使用 get_defined_constants() PHP built-in 函数来实现这一点,该函数列出了所有预定义的 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
希望对您有所帮助!
您可以根据过滤器列表进行验证:
$valid = in_array($filter, filter_list(), true);
其中 $filter
包含用户提供的过滤器值和 $valid
作为布尔值的结果(true
如果有效,false
如果无效)。
有关详细信息,请参阅 PHP 手册中的 filter_list()
。