1

我创建了一个名为 Sanitize 的类。

我使用 filter_var 函数来过滤和清理数据。我从一个数组中构建了 filter_var() 第三个参数: $options 类似于以下代码:

private $options = array('typeOfData' => array('options' => array(), 'flags' => array()));

我可以用正确的选项构建一个数组,但是这种方法不起作用。我只想要选项或标志中的一个,这不是问题。不幸的是,我想将几​​个选项或标志常量传递给 filter_var。

对于标志,是否可以构建想要的结果,如 FLAG1 | 标志2?如果不是,我应该使用 filter_var,并根据所需的标志切换到使用 filter_var 吗?

这是使用 filter_var 的当前代码:filter_var($value, $this->filters[$typeOFData], $this->currentOptions);

4

1 回答 1

1

根据类型进行消毒的类:

class Sanitize{
private $data;
private $filteredData;
private $options;
private $typeof;
private $filters;

function __contruct($data){

$this->typeof = gettype($data);
$this->data = $data;

switch ($this->typeof){
    case "integer":
       $this->options = array( /* array of options for integer type*/ );
       $this->filters = array( /*array of all filters you want to use on integers*/ )
        break;
    case "string":
       //....
}

private function getSanitized(){

$filtersNum = count($this->filters);

for($x=0;$x<$filtersNum;$x++){

if(allowsOptions($this->filters[$x])){ $options = $this->options; }else{$options = null;}

$this->filteredData = filter_var($this->data, $this->filters[$x], $options)
}
}

private function allowsOptions($filter){
/* all your code to check*/
return true or false
}
}

我希望这会有所帮助,如果没有,请告诉我。

于 2015-01-06T22:05:20.953 回答