上面这个页面变量过滤处标识能够使用如下方式过滤:
I('post.email','',FILTER_VALIDATE_EMAIL);
事实上是不可以的:
因为I方法中是使用explode方法来处理$filters的 导致
$filters = isset($filter)?$filter:C('DEFAULT_FILTER');
var_dump(gettype($filters)); //int 274
if($filters) {
$filters = explode(',',$filters);
var_dump(gettype($filters[0])); // string '274'FILTER_VALIDATE_EMAIL的类型由int变成了String然后再使用filter_id获取这个假字符串的返回结果必然为false
$data = filter_var($data,is_int($filter)?$filter:filter_id($filter));所以虽然是合法的email也会返回false了最佳答案