我试图压缩任何给定的字符串到一个较短的版本,复制粘贴,能压缩的字符串,不包含任何换行符。

我试图gzcompress,但然后复制/粘贴结果到一个不同的PHP脚本,并试图gzuncompress抛出“警告:gzuncompress():数据错误”

是否有压缩的字符串的任何天然PHP函数,其结果是没有任何换行符的字符串?

感谢。

有帮助吗?

解决方案

您可以尝试BASE64_ENCODE / BASE64_DECODE。如果你在压缩成二进制的剪切和粘贴,我建议你先的Base64编码它。

其他提示

在您的字符串运行gzcompress(),与已知的2个字符对在压缩结果替换换行符:

可以压缩后逃避你行分解。解压缩,替代由行分解的已知2个字符对,然后运行gzuncompress()...

其实,你需要执行2层的替代品。因为我无法表达这个在英语(不是我的母语),这里有一个例子:使用“+ N”逃生线路中断。你首先需要逃避每一个“+”,这是独自站在那里,因为如果它后跟它将被解压缩时,断行被意外更换一个“n”;让我们选择了“++”转义“+。然后通过“+ N”取代的换行符。解压缩的情况下,由线断替换每“+ N”对,则每一个“++”由“+”对。这就是它!

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top