Почему не получается обработать спарсенный Json?

Есть url в которым данные выводятся в json формате
spoiler
e90b8ba08c.jpg
$ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
        curl_setopt($ch, CURLOPT_URL,$url);
        $result=curl_exec($ch);
        curl_close($ch);

в переменно $result парсится json
spoiler
78a9eaec6f.jpg

а вот дальше json_decode пусто значение возвращает
print_r(json_decode($result))
Что не так?

p.s json_last_error() выводит ситаксическую ошибку, но если $result скопировать и вставить в код и декодировать, то нормально работает

p.p.s
var_dump($result); //string(26) "{"id":1,"bc":2,"asd":3}"
        var_dump(json_decode($result)); //NULL
  • Вопрос задан
  • 136 просмотров
Решения вопроса 1
@akhur Автор вопроса
нашел решение
// This will remove unwanted characters.
for ($i = 0; $i <= 31; ++$i) { 
    $result = str_replace(chr($i), "", $result); 
}
$result = str_replace(chr(127), "", $result);

// This is the most common part
// Some file begins with 'efbbbf' to mark the beginning of the file. (binary level)
// here we detect it and we remove it, basically it's the first 3 characters 
if (0 === strpos(bin2hex($result), 'efbbbf')) {
   $result = substr($result, 3);
}

$result = json_decode( $result );
print_r($result);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Eridani
@Eridani
Мимо проходил
** наврал
Потому что результат работы json_decode без второго параметра - объект, а не массив.
Вот json_decode($res, true) вернет массив
Ответ написан
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
В любой непонятной ситуации с json
json_last_error()

json decode всё еще не бросает ошибки сам, вроде как хотят исправить, но когда-нибудь может быть никогда)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы