Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 压缩一个字符串,最终结果没有换行符?_Php_Text Compression - Fatal编程技术网

Php 压缩一个字符串,最终结果没有换行符?

Php 压缩一个字符串,最终结果没有换行符?,php,text-compression,Php,Text Compression,我正在尝试将任何给定的字符串压缩到一个较短的版本,即不包含任何换行符的可复制粘贴的压缩字符串 我尝试了gzcompress,但随后将结果复制/粘贴到另一个php脚本中,并尝试gzuncompress抛出“警告:gzuncompress():数据错误” 是否有任何本机php函数压缩字符串,结果是没有任何换行符的字符串 谢谢。您可以尝试base64\u编码/base64\u解码。如果要压缩为二进制进行剪切和粘贴,我建议您先对其进行base64编码。压缩后可以转义换行符:对字符串运行gzcompres

我正在尝试将任何给定的字符串压缩到一个较短的版本,即不包含任何换行符的可复制粘贴的压缩字符串

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

是否有任何本机php函数压缩字符串,结果是没有任何换行符的字符串


谢谢。

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

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


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

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

$str=str\u replace(“\n”,”,$str)?我应该提到,我的目标是得到一个长度较短的原始文本。你仍然可以使用压缩算法,但如果你立即对生成的二进制进行base64编码,它将很适合剪切和粘贴。我尝试过:echo strlen($string);echo strlen(base64_编码(gzcompress($string));结果是:185188我想如果字符串太小,压缩就没有那么有用了,base64确实使它变长了。有了更大的数据,这将产生更明显的差异。最好的答案。base64_encode对较长的字符串确实有影响。echo str_replace(PHP_EOL,,,gzcompress($string));仍然返回一个多行结果,所以我假设它不起作用,因为组成新行的不可见字符实际上不是换行符?它们不是单个新行还是换行符('\r'和'\n')?无论如何,我似乎记得zip输出是二进制的,所以我不知道你将如何弥补所有不可打印的字符…Adrien Plisson的技术被称为“字节填充”(如RFC 1055“SLIP”、HDLC“异步帧”、JPEG“一致开销字节填充”等)。当“禁止字节”相对较少时,它工作得很好。然而,当“禁止字节”相对频繁时,其他技术——base64、asci85、basE91等可能工作得更好。