脚本宝典收集整理的这篇文章主要介绍了复杂数组的PHP输入过滤,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
$data = array( 'testarray' => array('2','23','10','12') ); $args = array( 'testarray' => array('filter' => FILTER_VALIDATE_INT,'flags' => FILTER_FORCE_ARRAY ) ); $myinputs = filter_var_array($data,$args);
但是,如果所讨论的数组是多维的并且需要针对不同部分使用不同的过滤器,那么您将如何定义过滤选项呢?
举个例子:
$data = array( 'testhash' => array('level1'=>'email','level2'=> array('23','12')) );
考虑使用FILTER_CALLBACK.通过这种方式,您可以编写一个本身使用过滤器扩展的回调函数,从而提供递归功能.
function validate_array($args) { return function ($data) use ($args) { return filter_input_array($data,$args); }; }
$args = array( 'user' => array( 'filter' => FILTER_CALLBACK,'options' => validate_array(array( 'age' => array('filter' => FILTER_INPUT_INT),'email' => array('filter' => FILTER_INPUT_EMAIL) )) ) );
这就是配置数组的样子.
想法2
不要犹豫要拍我的背,因为我为此感到自豪.
拿一个看起来像这样的arg数组.斜线表示深度.
$args = array( 'user/age' => array('filter' => FILTER_INPUT_INT),'user/email' => array('filter' => FILTER_INPUT_EMAIL),'user/parent/age' => array('filter' => FILTER_INPUT_INT),'foo' => array('filter' => FILTER_INPUT_INT) );
假设您的数据看起来像这样.
$data = array( 'user' => array( 'age' => 15,'email' => 'foo@gmail.COM','parent' => array( 'age' => 38 ) ),'foo' => 5 );
然后,您可以生成一个引用数组,将“user / age”等键映射到$data [‘user’] [‘age’].在最终的制作中,你得到这样的东西:
function my_filter_array($data,$args) { $ref_map = array(); foreach ($args as $key => $a) { $parts = explode('/',$key); $ref =& $data; foreach ($parts as $p) $ref =& $ref[$p]; $ref_map[$key] =& $ref; } return filter_var_array($ref_map,$args); } var_dump(my_filter_array($data,$args));
以上是脚本宝典为你收集整理的复杂数组的PHP输入过滤全部内容,希望文章能够帮你解决复杂数组的PHP输入过滤所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。