Сжатие строки, конечный результат без разрывов строк?

StackOverflow https://stackoverflow.com/questions/1662610

  •  12-09-2019
  •  | 
  •  

Вопрос

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

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

Есть ли какая-либо встроенная функция PHP, которая сжимает строку, и результатом является строка без разрывов строк?

Спасибо.

Это было полезно?

Решение

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top