filter_var_array()多维数组 [英] filter_var_array() multidimensional array
本文介绍了filter_var_array()多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
任何想法为什么这行不通?
Any ideas why this does not work?
$_POST = array('edit' => array('name' => 'test'));
die(var_dump(
filter_var_array($_POST, array(
'edit["name"]' => FILTER_SANITIZE_STRING,
'edit[name]' => FILTER_SANITIZE_STRING,
)),
$_POST
));
如何在要求它为数组的同时清理/过滤POST参数?
How can I sanitize/filter a POST parameter while requiring that it is an array ?
推荐答案
不知道filter_var_array()
不支持递归.不过,没有看到没有理由不这样做的原因.这是一个简单的解决方案:
Didn't know that filter_var_array()
does not support recursion. Don't see no reasons why it shouldn't, though. Here is a simple solution:
// 28 01 2010, Gajus Kuizinas
function hp_path_to_array($keys, $value, $data = array())
{
if(empty($keys))
{
return $value;
}
$key = array_shift($keys);
$data[$key] = hp_path_to_array($keys, $value, $data);
return $data;
}
function hp_filter_var_array($data, $rules)
{
$return = array();
foreach($rules as $k => $options)
{
$path = explode('[', str_replace(']', '', $k));
if(empty($path))
{
continue;
}
if(!is_array($options))
{
$filter = $options;
$options = array();
}
else
{
$filter = $options['filter'];
unset($options['filter']);
}
$value = $data;
foreach($path as $key)
{
if(isset($value[$key]))
{
$value = $value[$key];
}
else
{
$value = NULL;
break;
}
}
$return += hp_path_to_array($path, filter_var($value, $filter, $options));
unset($rules[$k]);
}
$return += filter_var_array($data, $rules);
return $return;
}
这篇关于filter_var_array()多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文