一尘不染

用php清理JSON

json

我总是使用filter_var($ var,FILTER,FLAG); 当我从$ _GET,$ _ POST等获取数据时,但是现在此数据是JSON字符串,但是我没有找到任何过滤器来净化JSON。有人知道如何实现此过滤器吗?

PHP filter_var():http//php.net/manual/en/function.filter-
var.php

PHP筛选器常量:http :
//php.net/manual/zh/filter.filters.sanitize.php


阅读 267

收藏
2020-07-27

共1个答案

一尘不染

首先将JSON解析为PHP数组,然后像处理常规请求内容一样对数组中的每个值进行过滤,您可以将JSON键映射到原理图过滤器和标志/选项,例如

$filters = array(
    'email'=>FILTER_VALIDATE_EMAIL, 
    'url'=>FILTER_VALIDATE_URL, 
    'name'=>FILTER_SANITIZE_STRING,
    'address'=>FILTER_SANITIZE_STRING
);
$options = array(
    'email'=>array(
        'flags'=>FILTER_NULL_ON_FAILURE
    ), 
    'url'=>array(
        'flags'=>FILTER_NULL_ON_FAILURE
    ), 
    //... and so on
);
$inputs = json_decode($your_json_data);
$filtered = array();
foreach($inputs as $key=>$value) {
     $filtered[$key] = filter_var($value, $filters[$key], $options[$key]);
}
2020-07-27