2

我正在尝试将任何给定的字符串压缩为更短的版本,复制不包含任何换行符的可粘贴压缩字符串。

我尝试了 gzcompress,但随后将结果复制/粘贴到不同的 php 脚本中并尝试 gzuncompress 抛出“警告:gzuncompress():数据错误”

有没有任何原生的php函数可以压缩一个字符串,结果是一个没有任何换行符的字符串?

谢谢。

4

3 回答 3

5

你可以试试 base64_encode / base64_decode。如果您要压缩为二进制以进行剪切和粘贴,我建议您先对其进行 base64 编码。

于 2009-11-02T17:35:55.633 回答
2

您可以在压缩后转义换行符:在您的字符串上运行 gzcompress(),在压缩结果中用已知的 2 个字符对替换换行符。要解压缩,用换行符替换已知的 2 个字符对,然后运行 ​​gzuncompress()...

实际上,您将需要执行 2 次替换。因为我不能用英语(不是我的母语)表达这一点,所以这里有一个例子:使用 '+n' 来转义换行符。您首先需要转义每个单独的“+”,因为如果它后面跟着一个“n”,它会在解压缩时意外地被换行符替换;让我们选择 '++' 来转义 '+。然后用'+n'替换换行符。解压缩时,将每个“+n”对替换为换行符,然后将每个“++”对替换为“+”。就是这样 !

于 2009-11-02T17:45:43.563 回答
1

设计一个总能产生比输入短的输出的通用压缩算法是不可能的。所以,如果你总是希望输出比输入短,你必须开始限制你的算法可以做什么。您需要考虑输入(长)字符串中可接受的字符,以及输出(短)字符串中可接受的字符。一旦你对这些有了很好的了解,你就可以开始计算你的选择是什么了。

于 2009-11-02T22:50:28.910 回答