Не правильно выводит массив с данными через JSON?
Есть данные в текстовом файле, точней массив, такого вида:
[[0,\u0022\u042f \u0022],[0.2,\u0022\u043f\u0440\u043e\u0441\u0442\u043e \u0022]]
Вывожу JSON массив вот так:
$text=file_get_contents($filename);
echo json_encode($text, JSON_UNESCAPED_UNICODE);
И при получении этого массива есть ошибка. json_encode добавляет всем Unicode данным, которые в этом массиве, еще один символ \\, то есть вот так:
[[0,\\u0022\\u042f \\u0022],[0.2,\\u0022\\u043f\\u0440\\u043e\\u0441\\u0442\\u043e \\u0022]]
И при получении массива через JS - JSON.parse(), соответственно получается ошибка.
Может существует какой то обход этого добавления символа?
Ответы (1 шт):
Автор решения: Denis640Kb
→ Ссылка
Вы можете раскодировать строку и снова её передать.
$Arr = '[[0,\u0022\u042f \u0022],[0.2,\u0022\u043f\u0440\u043e\u0441\u0442\u043e \u0022]]';
$Arr = str_replace('\u0022', '"', $Arr);
function unicode_escape_decode($str) {
return html_entity_decode(
preg_replace('~\\\u([a-zA-Z0-9]{4})~', '&#x$1;', $str), null, 'UTF-8'
);
}
$Arr = unicode_escape_decode($Arr);
$bz = json_encode($Arr);
echo $bz;