我正在寻找一种方法来遍历 json 对象并将所有字符切换为 HTML 安全字符,htmlspecialchars()
例如使用该函数。
我想我可以循环并创建一个新的 json 对象并更改字符,但我认为必须有更优化的方法来做到这一点?
我正在寻找一种方法来遍历 json 对象并将所有字符切换为 HTML 安全字符,htmlspecialchars()
例如使用该函数。
我想我可以循环并创建一个新的 json 对象并更改字符,但我认为必须有更优化的方法来做到这一点?
按照建议,array_walk_recursive
可能是最好的选择:
$array = json_decode($json, true);
array_walk_recursive($array, function(&$value) {
$value = encoding_function($value);
});
$json = json_encode($array);
encoding_function
您选择对值进行编码的函数在哪里?那可能是htmlspecialchars
或其他。
或者,您可以将整个混乱包装为一个函数本身:
function json_walk_recursive($json, callable $function) {
$array = json_decode($json, true);
array_walk_recursive($array, function(&$value) use($function) {
$value = $function($value);
});
return json_encode($array);
}
echo json_walk_recursive('{"foo":"bar","baz":{"qux":"zip"}}', function($value) {
return strtoupper($value);
});
// {"foo":"BAR","baz":{"qux":"ZIP"}}
这个例子可以在很多方面进行优化;比如$function
直接array_walk_recursive
传递给_ _当前形式;但我离题了)
此外,您还需要错误恢复和其他此类必需品。