2016-05-30 12 views
4

私は常にfilter_var($ var、FILTER、FLAG)を使用します。 $ _GET、$ _POSTなどからデータを取得すると、このデータはJSON文字列になりますが、JSONをサニタイズするフィルタは見つかりませんでした。誰もこのフィルタを実装する方法を知っていますか?JSONをphpでサニタイズ

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

PHPフィルターCONST:http://php.net/manual/en/filter.filters.sanitize.php

+0

jsonの取得方法 –

+1

[json_decode](http://php.net/manual/en/function.json-decode.php)は、json文字列が無効な場合はnullを返します。次に、それらが何であるか(番号、電子メールなど)に応じて、包含プロパティをvarにフィルタリングする必要があります。 – JimL

答えて

6

は、PHPの配列に最初にJSONを解析して、あなたが定期的に要求内容と同じように、あなたがマップすることができ、配列内の各値をフィルタリングスキーマフィルタとフラグ/オプションへの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]); 
} 
関連する問題