|
|
|
| нужно передать методом GET длинное значение переменной (до 255 символов)
конкретно - версию браузера
например "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"
без сжатия получаем такой линк:
http://192.168.0.1/test.php?agent=Mozilla/4.0%20(compatible;%20MSIE%206.0;%20Windows%20NT%205.1;%20SV1;%20.NET%20CLR%202.0.50727)
м-мм... некрасиво.
если упаковать ее скажем base64_encode, получим:
http://192.168.0.1/test.php?agent=TW96aWxsYS80LjAgKGNvbXBhdGlibGU7IE1 TSUUgNi4wOyBXaW5kb3dzIE5UIDUuMTsgU1 YxOyAuTkVUIENMUiAyLjAuNTA3Mjcp
не намного лучше
gzdeflate естественно не подойдет, там будет двоичный формат.
подскажите как выйти из положения (ну кроме как не передавать такие длинные строки через GET) | |
|
|
|
|
|
|
|
для: irr
(19.09.2010 в 19:12)
| | Кому передать? | |
|
|
|
|
|
|
|
для: sim5
(19.09.2010 в 19:23)
| | скрипту test.php, в котором будет:
$agent=$_GET['agent'];
и дальнейшая работа с этой переменной
P.S. $_GET['agent'] не равно $_SERVER['HTTP_USER_AGENT'] | |
|
|
|
|
|
|
|
для: irr
(19.09.2010 в 19:41)
| | Если не нравится, помещайте в сессию, или замените пробелы на любой понравившшийся вам разделитель, будет короче. | |
|
|
|
|
|
|
|
для: sim5
(19.09.2010 в 19:45)
| | я надеялся что может быть что-то такое хитрое есть :)
позволившее бы сжать текстовую строку в еще более компактную текстовую строку
base64_encode к сожалению увеличивает длину строки в среднем на 33% | |
|
|
|
|
|
|
|
для: irr
(19.09.2010 в 20:11)
| | >я надеялся что может быть что-то такое хитрое есть :)
>позволившее бы сжать текстовую строку в еще более компактную текстовую строку
а потом, получившуюся текстовую строку сжать еще раз и получить еще более компактную текстовую строку.
а потом, получившуюся текстовую строку сжать еще раз и получить еще более компактную текстовую строку.
...
а потом когда получится строка 0 бит размером - сильно удивиться. Поскольку назад фарш е провернуть.
>base64_encode к сожалению увеличивает длину строки в среднем на 33%
неужели только в среднем? | |
|
|
|
|
|
|
|
для: Trianon
(19.09.2010 в 22:00)
| | к чему иронизировать? понятно что до бесконечности не сожмешь.
я спрашивал - есть ли алгоритм сжатия текста в текст кроме base64 (т.к. поскольку у него на входе могут быть бинарные данные - результат конечно длиннее получается)
насчет "в среднем" - так сказано в описании функции на php.net | |
|
|
|
|
|
|
|
для: irr
(29.09.2010 в 18:53)
| | >к чему иронизировать?
к тому, что думать не желаете.
>понятно что до бесконечности не сожмешь.
к означенному пределу Вы напрямую подобрались.
>я спрашивал - есть ли алгоритм сжатия текста в текст кроме base64 (т.к. поскольку у него на входе могут быть бинарные данные - результат конечно длиннее получается)
а если не в текст?
Вы пробовали сжать эту строку обычным архиватором?
Смотрели, что выйдет?
>насчет "в среднем" - так сказано в описании функции на php.net
в том описании сказано не "в среднем", а "около", "приблизительно"
base64_encode не занимается никаким сжатием. Она выполняет кодирование. Строго детерминированно.
И на каждые полные или неполные 6 бит она производит 8. Два лишних бита - наценка за "текстовость" - это ровно одна треть от исходных шести. .
О каком "в среднем" тут можно говорить?
Более экономичная методика кодирования, помнится, была рассмотрена мной в одной из задач - в разделе "Задачи", кто бы мог подумать.
PS. 22-я. Июль 2007 года.
PPS. Но и она сжимать данные не станет. Скидки не будет - только наценка, хоть и полегче. | |
|
|
|
|
|
|
|
для: Trianon
(29.09.2010 в 19:36)
| | > к тому, что думать не желаете.
а зачем мне думать, когда есть softtime? :) запостил вопрос - получил ответ.
к счастью тут еще можно встретить адекватных людей, целью которых помочь, а не поднять себе ЧСВ.
>> я спрашивал - есть ли алгоритм сжатия текста в текст кроме base64
> а если не в текст?
> Вы пробовали сжать эту строку обычным архиватором?
> Смотрели, что выйдет?
а вы читали что я писал в самом первом посте?
почему вы отвечаете вопросом на вопрос? | |
|
|
|
|
|
|
|
для: irr
(30.09.2010 в 05:37)
| | >а зачем мне думать, когда есть softtime? :) запостил вопрос - получил ответ.
потому что Вы программист, а не дворник, грузчик, шофер и т.д.
во всяком случае именно в этой роли выступаете, уж коль скоро взялись скрипт писать. | |
|
|
|
|
|
|
|
для: irr
(30.09.2010 в 05:37)
| | >> Вы пробовали сжать эту строку обычным архиватором?
>> Смотрели, что выйдет?
я не про двоичность.
я про размер строки на выходе. Про то, что экономии Вы не получите. | |
|
|
|
|
|
|
|
для: irr
(19.09.2010 в 19:41)
| | Не проще в самом скрипте test.php взять переменную $_SERVER['HTTP_USER_AGENT'] и работать с ней? Зачем его обязательно передавать формой? | |
|
|
|
|
|
|
|
для: Loneliness
(19.09.2010 в 21:28)
| | не проще. я же писал выше - я передаю не клиентский USER_AGENT | |
|
|
|
|
|
|
|
для: irr
(29.09.2010 в 18:48)
| | методом обратимого шифрования + ключ (константа) | |
|
|
|
|
|
|
|
для: irr
(19.09.2010 в 19:12)
| | можно попробовать заменить windows на %w а compantible на %k :) и так-далее | |
|
|
|
|
|
|
|
для: heed
(30.09.2010 в 06:44)
| | фактически, это сжатие с фиксированным словарем, хранящимся по обе стороны канала. И которое предполагает некую априорно известную информацию о строке. И если оная не выполняется - сжатая строка получится лишь длиннее. | |
|
|
|