Sau khi thực hiện một yêu cầu gzip deflate trong PHP, tôi nhận được chuỗi xì hơi trong khối bù đắp, trông giống như sauLàm thế nào để giải mã/thổi phồng chuỗi gzip đã được chunked?
Ví dụ rút ngắn rất nhiều để hiển thị định dạng:
00001B4E
¾”kŒj…Øæ’ìÑ«F1ìÊ`+ƒQì¹UÜjùJƒZ\µy¡ÓUžGr‡J&=KLËÙÍ~=ÍkR
0000102F
ñÞœÞôΑüo[¾”+’Ñ8#à»0±R-4VÕ’n›êˆÍ.MCŽ…ÏÖr¿3M—èßñ°r¡\+
00000000
Tôi không thể thổi phồng rằng có lẽ vì định dạng chunked. Tôi có thể xác nhận dữ liệu không bị hỏng sau khi gỡ bỏ thủ công các offset với trình chỉnh sửa Hex và đọc lưu trữ gzip. Tôi tự hỏi nếu có một phương pháp thích hợp để phân tích cú pháp này gzip xáo trộn phản ứng vào một chuỗi có thể đọc được?
Tôi có thể chia các khoảng trống này và kết hợp dữ liệu với nhau trong một chuỗi để gọi gzinflate, nhưng có vẻ như phải có cách dễ dàng hơn.
Tuyệt vời, hoạt động như mong đợi. Đó là một chức năng PHP tiện dụng thực sự, tôi đã tìm kiếm điều này trong một thời gian. Cảm ơn rất nhiều! – user1309276
@ user1309276 Tôi đã cập nhật chức năng trên, nó có lỗi xung quanh hành vi khi chuỗi chứa CRLF theo nghĩa đen. Điều này đã được khắc phục, và điều này cũng đã cung cấp phát hiện tốt hơn các chuỗi không đúng định dạng. – DaveRandom
Cảm ơn bạn lần nữa! Đối với bất cứ ai vẫn gặp vấn đề, sau khi gọi unchunk_string tất cả những gì tôi cần làm là loại bỏ 10 byte đầu tiên bằng cách sử dụng: $ data = gzinflate (substr ($ data, 10)); – user1309276