Строка сжатия PHP - PullRequest
       12

Строка сжатия PHP

1 голос
/ 31 января 2012

У меня есть дамп массива, который я хочу сжать в строку, которая может быть отправлена ​​через URL в другую часть и декодирована.

В настоящее время я gzcompressing его и base64 его кодирования.Однако это не похоже на работу.Он возвращает bool(false), когда я использую его на приемном конце.

gzcompress(json_encode($images),9))

Пример кодированных данных

string(214) "{"1":null,"2":null,"3":null,"4":"..\/uploads\/2462df38db374653720daa42b7aefec4\/cv4slm3fr8_c.png","5":"..\/uploads\/2462df38db374653720daa42b7aefec4\/vzh72hwqvk_c.png","6":null,"7":null,"8":null,"9":null,"10":null}"

Значения null сзаполнены схожими данными.И мне нужно передать эти данные через URL в другой скрипт.

Примечание: открываемый URL-адрес находится внутри модального окна, поэтому я не могу отправить его в POST.

Ответы [ 3 ]

6 голосов
/ 31 января 2012

Не делай этого. URL не предназначены для «больших» строк. Они имеют ограничения по длине, которые различны для каждого браузера. Вы рискуете получить поврежденные данные, когда браузер / сервер молча обрезает вам URL. URL-адреса также не подходят для произвольных двоичных данных, то есть, в конечном итоге вы получите данные, сжатые GZ, вам придется кодировать их по URL-адресу, что почти наверняка приведет к тому, что строка пропустит то, что было изначально.

Вместо этого используйте запрос POST, который имеет гораздо большие ограничения.

2 голосов
/ 31 января 2012

Вместо того, чтобы кодировать его через json, попробуйте просто преобразовать этот массив в строку и отправить его через POST

$encoded = base64_encode(serialize($arrayOfData));

Отправьте это как POST-запрос на сервер и расшифруйте на другой стороне

$decoded = base64_decode(unserialize($receivedData));
0 голосов
/ 12 июня 2012

В приведенных выше ответах рассматривается большинство вопросов. Но Марк упомянул о хорошем.Передача больших строк может вызвать проблемы. POST - это хороший способ.

Но в некоторых ситуациях вы не можете использовать почту.например, если вы хотите предоставить функцию закладок.

Поэтому для передачи данных такого типа в строку используйте base64_encode (gzcompress (json_encode ($ arr)), 9).Это определенно уменьшит размер параметров, передаваемых в строке запроса.

Надеюсь, это будет полезно.

...