Разбор JSON

Renny

Новичок
Разбор JSON

Небольшая проблемка при использовании кода:
PHP:
$content = file_get_contents('test.com/get_data.php');
$json = json_decode($data, true);
по идее этот код должен работать, но он не работает, переменная остается пустой.

Потому что скрипт который формирует JSON, по адресу 'test.com/get_data.php', выдает все в формате UTF-8.
А мешают нормальному разбору BOM, которые у данных в UTF-8 идут перед данными.

Чего делать? Как кто данную проблему обошел? Наверняка многие принимают JSON в кодировке UTF-8.

Самое простое что я придумал, просто тупо нахожу символ первой скобки и обрезаю все данные до нее. Работает конечно, но кажется мне это неправильным подходом.
 

pilot911

Новичок
проще в файл get_data.php писать полный скрипт, в котором присваиваешь переменной, например, $tmp_json сериализованное значение, и делаешь просто requre('test.com/get_data.php')

типа

requre('test.com/get_data.php');
$json = json_decode($tmp_json, true);
unset($tmp_json);
 

Renny

Новичок
даже ежели такое проканает, то ведь ты просто открываешь дверь на свой сайт владельцу адреса 'test.com/get_data.php'.

Но вопрос не в этом, а как победить этот хренов BOM, неужели все выкусывают эту сигнатуру?
 

Renny

Новичок
Дело в том что данные формируются скриптом php вот код
PHP:
$data_str = json_encode('некоторый набор данных');
header('Content-Type: text/html; charset=utf-8');
echo $data_str;
и вот не понимаю я откуда тут BOM берется, кто его добавляет? php? тогда как с этим бороться?
 

Renny

Новичок
файлы php, которые лежат на сервере и отдают данные, они без BOM.
Вот я как раз понять не могу, откуда этот BOM ставится. Если данные выводятся в браузер с BOMом, то и либо он был в данных, либо его просто php самовольно добавил. Но в данных BOM не было!
 

440hz

php.ru
какой-то скрипт содержит BOM. или сам тот, который отдает или те, которые включаются. в лбом случае у тебя на headers() должна быт ь ошибка, т.к. данные уже выведены (BOM). Ищи...
 

Adelf

Administrator
Команда форума
А вам всем не кажется, что между двумя строками нет вааще никакой связи? Нет даже общих переменных.
 
Сверху