我需要清理JSON文件中的值(例如,来自github的composer.json
文件)。我json_decode($file)
将其转换为stdClass
个对象。 (我需要它作为一个对象,而不是一个数组 - 我知道这个选项。)
我需要递归地清理所有可能是对象的值(也可能是键?)。
我需要从文件中删除任何和所有“危险”字符等,但希望它保持多语言,因此计划使用filter_var($value, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW)
。
请提供建议和意见。也许我错过了明显的,但这似乎比它应该更难。
答案 0 :(得分:0)
对象可以通过 foreach :
进行迭代function sanitize($data) {
foreach ($data as &$value) {
if (is_scalar($value)) {
$value = sanitizeValue($value);
continue;
}
sanitize($value);
}
return $data;
}
答案 1 :(得分:0)
Михаил-М的答案很接近。我需要稍微调整一下:
function sanitize($data) {
foreach ($data as &$value) {
if (is_scalar($value)) {
$value = sanitizeValue($value);
continue;
}
$value = sanitize($value);
}
return $data;
}
当然,这并没有解决我使用上面提到的filter_var
方法实际清理数据的问题。所以我终于解决了这个问题:
function sanitize($data) {
foreach ($data as &$value) {
if (is_scalar($value)) {
$value = filter_var($value, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW);
continue;
}
$value = sanitize($value);
}
return $data;
}