Сжатие строки, конечный результат без разрывов строки? - PullRequest
2 голосов
/ 02 ноября 2009

Я пытаюсь сжать любую заданную строку до более короткой версии, скопировать вставляемую сжатую строку, которая не содержит разрывов строк.

Я попробовал gzcompress, но затем скопировал / вставил результат в другой скрипт php и попытался сгенерировать gzuncompress «Предупреждение: gzuncompress (): ошибка данных»

Существует ли какая-либо встроенная функция php, которая сжимает строку, и в результате получается строка без разрывов строки?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 02 ноября 2009

Вы можете попробовать base64_encode / base64_decode. Если вы сжимаете в двоичный файл для вырезания и вставки, я бы посоветовал вам сначала кодировать его в base64.

2 голосов
/ 02 ноября 2009

вы можете избежать разрывов строк после сжатия: запустите gzcompress () для вашей строки, замените разрывы строк известной парой из 2 символов в сжатом результате. чтобы разархивировать, замените пару известных символов на разрывы строк, затем запустите gzuncompress () ...

на самом деле вам нужно будет выполнить 2 замены. так как я не могу выразить это по-английски (не на своем родном языке), вот пример: используйте '+ n', чтобы избежать разрывов строки. сначала вам нужно будет экранировать все «+», стоящие в одиночестве, поскольку, если после него стоит «n», он будет случайно заменен разрывом строки при распаковке; давайте выберем «++» для экранирования +. затем замените разрывы строк на '+ n'. при распаковке заменяйте каждую пару «+ n» на разрыв строки, а затем каждую пару «++» на «+». это все!

1 голос
/ 03 ноября 2009

Невозможно разработать общий алгоритм сжатия, который всегда производит выходные данные короче, чем входные. Таким образом, если вы всегда хотите, чтобы вывод был более коротким, чем ввод, вы должны начать ограничивать возможности вашего алгоритма. Вам нужно подумать о том, какие символы допустимы во входной (длинной) строке, а какие символы допустимы в вашей выходной (короткой) строке. Как только у вас есть хорошее представление об этом, вы можете приступить к выработке своих вариантов.

...