这期内容当中小编将会给大家带来有关如何在PHP中使用bz2压缩扩展工具,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
这个扩展的安装需要系统有 bzip2-devel 。所以我们需要先给系统装上这个软件包的支持,然后这个扩展是随 PHP 安装包一起发布的,所以只需要编译一下 PHP ,并在 ./configure 中添加对应的编译命令即可。
# yum install bzip2-devel # ./configure xxxx --with-bz2 # make && make install
Bzip2 提供的函数不多,而且非常简单,我们首先来看的是将字符串保存到一个文件中。
$bz = bzopen('/tmp/test.bz', 'w'); // -rw-r--r-- 1 root root 14 Jun 28 09:51 test.bz $text = "This is Bz Compress"; bzwrite($bz, $text); // -rw-r--r-- 1 root root 59 Jun 28 09:53 test.bz bzclose($bz); $bz = bzopen('/tmp/test.bz', 'r'); $v = bzread($bz); echo $v, PHP_EOL; // This is Bz Compress bzclose($bz);
就和文件操作函数一样,我们需要先通过 bzopen() 打开文件获得句柄。然后使用 bzwrite() 来写入文件,并使用 bzread() 来读取文件。最后使用 bzclose() 来关闭文件。
这里需要注意的是 bzopen() 的第二个参数,也就是文件打开的形式,只能写 "w" 或者 "r" 。它没有其它类型,并且不能同时读写,也就是不能写成 "wr" 这种形式。所以我们在写完文件后又要再使用 "r" 打开文件才能进行读取。
读取长度设置
$bz = bzopen('/tmp/test.bz', 'r'); $v = bzread($bz, 10); echo $v, PHP_EOL; // This is Bz $v = bzread($bz); echo $v, PHP_EOL; // Compress bzclose($bz);
bzread() 的第二个参数是可选的字节长度,默认是 1024 ,一次最大可读入 8192 个未压缩字节。
Bzip2 扩展还为我们提供了直接对字符串编码的函数。不用每次都存入文件中,如果是相同的字符串,使用字符串编码的函数和输出到文件中的内容是一样的乱码的二进制内容。
$str = "Test compress String"; $bzstr = bzcompress($str, 9); echo $bzstr, PHP_EOL; // BZh91AY&SY��J���@ // // �� 1 // df����2�h>.�p�!��// $newStr = bzdecompress($bzstr); echo $newStr, PHP_EOL; $chineseStr = "测试"; $bzstr = bzcompress($chineseStr, 9); echo bzdecompress($bzstr), PHP_EOL;
bzcompress() 用于将字符串进行编码压缩,第二个参数是压缩的比率,9 为最高等级。编码后的内容是非人类的二进制乱码内容。bzdecompress() 用于对已编码的内容进行解码。相信不少小伙伴已经发现了,这个可以用来做一些保密内容的加密传输。同时,在测试代码中,我们可以看到,它对中文也是正常支持的。
最后,我们来看一下 Bzip2 的错误处理函数。
$bz = bzopen('/tmp/test.bz', 'r'); bzwrite($bz, 'aaa'); print_r(bzerror($bz)); // Array // ( // [errno] => -1 // [errstr] => SEQUENCE_ERROR // ) echo bzerrno($bz), PHP_EOL; // -1 echo bzerrstr($bz), PHP_EOL; // SEQUENCE_ERROR bzclose($bz);
php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因为php是开源的,从而使得php经久不衰。
上述就是小编为大家分享的如何在PHP中使用bz2压缩扩展工具了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。