我正在尋找通過json對象並通過使用htmlspecialchars()
函數將所有字符切換爲HTML安全字符的方法。在JSON對象中將所有字符更改爲ASCII
我想我可以循環並創建一個新的json對象與字符的變化,但我想一定有一個更優化的方式來做到這一點?
我正在尋找通過json對象並通過使用htmlspecialchars()
函數將所有字符切換爲HTML安全字符的方法。在JSON對象中將所有字符更改爲ASCII
我想我可以循環並創建一個新的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
,但我只是擴大它的可讀性(我不知道,它對我來說似乎更清楚。它確實要求參數作爲參考,因此消費代碼不需要知道當前形式的細節;但我離題)
此外,你會想錯誤恢復和其他這樣的必需品。
做了類似於你的第二個建議,謝謝你! – David 2013-03-08 14:34:30
JSON是一個字符串 - 一種使用JavaScript文字語法子集的序列化數據結構。你的意思是說,你有一個PHP Array,它是通過在數組的JSON序列化表示上運行'json_decode()'產生的? – JAAulde 2013-03-08 00:23:38