我正在尝试将任何给定的字符串压缩为更短的版本,复制不包含任何换行符的可粘贴的压缩字符串。
我尝试了gzcompress,但随后将结果复制/粘贴到不同的php脚本中并尝试gzuncompress抛出“警告:gzuncompress():数据错误”
是否存在压缩字符串的本机php函数,结果是没有任何换行符的字符串?
感谢。
答案 0 :(得分:5)
您可以尝试使用base64_encode / base64_decode。如果您正在压缩为二进制文件进行剪切和粘贴,我建议您首先对其进行base64编码。
答案 1 :(得分:2)
压缩后可以转义换行符:在字符串上运行gzcompress(),在压缩结果中用已知的2个字符对替换换行符。要解压缩,用换行符替换已知的2个字符对,然后运行gzuncompress()......
实际上,您需要执行2次替换。因为我不能用英语表达这个(不是我的母语),这里有一个例子:使用'+ n'来逃避换行符。你首先需要逃避每个单独站立的'+',因为如果它后跟一个'n',它将在解压缩时意外地被换行取代;让我们选择'++'来逃避'+'。然后用'+ n'替换换行符。解压缩时,用换行符替换每个'+ n'对,然后用'+'替换每个'+'对。就是这样!
答案 2 :(得分:1)
设计一般压缩算法是不可能的,它总是产生比输入短的输出。因此,如果您总是希望缩短输出而不是输入,则必须开始限制算法可以执行的操作。您需要考虑输入(长)字符串中可接受的字符,以及输出(短)字符串中可接受的字符。一旦你对这些有了解,你就可以开始研究你的选择了。