|
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 назад
|
| Форум | Правила | Описание | Секции | Поиск |