Лучший способ сжать строку в PHP [дубликат]

This question already has an answer here:

Which compression method to use in PHP? 4 answers

Я сжимаю массив с помощью gzcompress (json_encode ($ arr), 9). Поэтому я конвертирую массив в строку с помощью json_encode, а затем сжимаю с помощью gzcompress. Но я не смог найти большой разницы в размере приведенной строки. Размер до сжатия составляет 488 КБ, а после сжатия - 442 КБ.

Есть ли способ, как я могу сжать строку дальше?

Заранее спасибо.

Ответы на вопрос(2)

Решение Вопроса

Насколько хорошим будет сжатие вашей строки, зависит от данных, которые вы хотите сжать. Если он состоит в основном из случайных данных, вы не достигнете такого большого улучшения в размере. Есть много алгоритмов, которые были разработаны для конкретного использования.

Вы должны попытаться определить, из чего в основном состоят ваши данные для сжатия, а затем выбрать правильное сжатие.

Только сейчас я могу только отослать вас кbzcompressУ bzip обычно более высокая степень сжатия, чем у gzip.

Я не уверен, что ваши цифры верны, но вы можете использовать gzdeflate вместо gzcompress, так как gzcompress добавляет 6 байтов к выводу, 2 дополнительных байта в начале и 4 дополнительных байта в конце.

Простой тест показывает строку 1756800 len, сжимаемую до 99 байт двойным сжатием, 5164 байт, если сжать один раз.

<?php 
$string = str_repeat('1234567890'.implode('', range('a', 'z')), 48800);

echo strlen($string); //1756800 bytes

$compressed = gzdeflate($string,  9);
$compressed = gzdeflate($compressed, 9);

echo '<br/>'.strlen($compressed).'<br/>';//99 bytes

echo gzinflate(gzinflate($compressed));
?>

Ваш ответ на вопрос