|
PHP почему не срабатывает json_decode
| ☑ |
0
vde69
08.01.23
✎
18:13
|
не могу сообразить в чем проблема?
код
try{
$res = json_decode($data, true);
} catch (Exception $e) {
echo '<br>===>>>ERROR';
return false;
}
echo '<br>===>>>'.$data.' ===>>> '. json_encode($res);
выводит
===>>>{"id":"bfe5610e0698dd22828tdg","cap":5520,"seq":4,"ka_seq":35194,"lan_ablilty":1} ===>>> null
То есть не разбирает строку $data, вроде она правильная, онлайн проверку проходит.
пока приходят на ум только 3 мысли
1. строка не совсем строка (например нет нул терминатора)
2. в середине есть запрещенные и нечитаемые символы
3. что-то с кодировками не то
но не соображу как проверить....
ps
входящая строка это ответ от реальной железки, то есть я не сам ее выдумал...
|
|
1
Волшебник
модератор
08.01.23
✎
18:29
|
напиши var_dump($data)
|
|
2
Asmody
08.01.23
✎
18:35
|
|
|
3
vde69
08.01.23
✎
18:39
|
спасибо помогло удаление неправильных символов в конце
json_decode(preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $data), true)
|
|
4
vde69
08.01.23
✎
18:41
|
почитал, это проблема исходит от openssl_decrypt, это он при раскодировании может фигню накидывать в конец буфера
|
|
5
Asmody
08.01.23
✎
18:44
|
(3) там есть флаг JSON_INVALID_UTF8_SUBSTITUTE вроде как для этого
|
|
6
Asmody
08.01.23
✎
18:45
|
ну или JSON_INVALID_UTF8_IGNORE, чтобы вообще всё сразу отмести
|
|
7
vde69
08.01.23
✎
19:13
|
(6) это не работает :) реально работает только (3)
|
|
8
Tarzan_Pasha
08.01.23
✎
19:36
|
что это вы в мою профессию залезаете - в php? Вам 1с мало?
|
|
9
Волшебник
модератор
08.01.23
✎
21:25
|
(8) Движок мисты написан на PHP. Мы его начали использовать, когда ты ещё худой был, лет 20 назад
|
|