过滤数组中的数据,避免sql注入、xss等问题

/**
 * 过滤数组中的数据,避免sql注入、xss等问题
 * @param array $arr 要过滤的数组(可以是多维数组)
 * @param string $filter 指定的过滤方法名
 */
function filterArray($arr, $filter='strip_tags,htmlspecialchars,trim') {
    if(!is_array($arr)) return false;
    $result = array();
    $filters = explode(',', $filter);
    foreach ($arr as $key => $val) {
        if(is_array($val)){
            $result[$key] = filterArray($val);
        }else{
            foreach($filters as $f) {
                $val = call_user_func($f, $val);
            }
            $result[$key] = $val;
        }
    }
    return $result;
}

函数调用示例:
$arr = array(
        'id'          =>    '1 ', 
        'name'    =>    'jack&',
        'tag'       =>    '<a href="#">test</a>123', 
        'arr'        =>    array('id'=>'1 ', 'name'=>"jack&")
);
var_dump( filterArray($arr) );

你可能感兴趣的:(数据过滤)