> 백엔드 개발 > PHP 튜토리얼 > PHP는 zip 압축 및 압축 풀기 범용 기능을 구현합니다.

PHP는 zip 압축 및 압축 풀기 범용 기능을 구현합니다.

WBOY
풀어 주다: 2016-07-25 08:45:18
원래의
1163명이 탐색했습니다.
  1. function ezip($zip, $hedef = ''){
  2. $dirname=preg_replace('/.zip/', '', $zip);
  3. $root = $_SERVER['DOCUMENT_ROOT'].'/zip/';
  4. // echo $root. $zip;
  5. $zip = zip_open($root . $zip);
  6. // var_dump($zip);
  7. @mkdir($root . $hedef . $dirname.'/'.$zip_dosya);
  8. while($zip_icerik = zip_read($zip)){
  9. $zip_dosya = zip_entry_name($zip_icerik);
  10. if(strpos($zip_dosya, '.')){
  11. $hedef_yol = $root . $hedef . $dirname.'/'.$zip_dosya;
  12. @touch($hedef_yol);
  13. // echo $hedef_yol;
  14. $yeni_dosya = @fopen($hedef_yol, 'w ');
  15. @fwrite($yeni_dosya, zip_entry_read($zip_icerik));
  16. @fclose($yeni_dosya);
  17. // $yeni_dosya;
  18. }else{
  19. @mkdir($root . $hedef . $dirname.'/'.$zip_dosya);
  20. // echo $root . $hedef . 'x/'.$zip_dosya;
  21. };
  22. };
  23. }
  24. // ezip('yuol.zip','./tr/');
  25. function zip($path) {
  26. $path=preg_replace('//$/', '', $path);
  27. preg_match('//([dD][^/]*)$/', $path, $matches, PREG_OFFSET_CAPTURE);
  28. $filename=$matches[1][0].".zip";
  29. // var_dump($filename);
  30. // set_time_limit(0);
  31. $zip = new ZipArchive();
  32. $zip->open($filename,ZIPARCHIVE::OVERWRITE);//return ;
  33. // var_dump($path);
  34. if (is_file($path)) {
  35. $path=preg_replace('////', '/', $path);
  36. $base_dir=preg_replace('//[dD][^/]*$/', '/', $path);
  37. $base_dir=addcslashes($base_dir, '/:');
  38. $localname=preg_replace('/'.$base_dir.'/', '', $path);
  39. // var_dump($localname);
  40. $zip->addFile($path,$localname);
  41. // var_dump($path);
  42. $zip->close();
  43. return;
  44. }elseif (is_dir($path)) {
  45. $path=preg_replace('//[dD][^/]*$/', '', $path);
  46. $base_dir=$path.'/';//基目录
  47. $base_dir=addcslashes($base_dir, '/:');
  48. // var_dump($base_dir);
  49. }
  50. $path=preg_replace('////', '/', $path);
  51. // var_dump($path);
  52. function addItem($path,&$zip,&$base_dir){
  53. // var_dump($path);
  54. $handle = opendir($path);
  55. // var_dump($path);
  56. while (false !== ($file = readdir($handle))) {
  57. if (($file!='.')&&($file!='..')){
  58. // var_dump($file);
  59. $ipath=$path.'/'.$file;
  60. if (is_file($ipath)){//条目是文件
  61. $localname=preg_replace('/'.$base_dir.'/', '', $ipath);
  62. var_dump($localname);
  63. $zip->addFile($ipath,$localname);
  64. // var_dump($r);
  65. } else if (is_dir($ipath)){
  66. addItem($ipath,$zip,$base_dir);
  67. $localname=preg_replace('/'.$base_dir.'/', '', $ipath);
  68. var_dump($localname);
  69. $zip->addEmptyDir($localname);
  70. }
  71. // var_dump($path);
  72. }
  73. }
  74. }
  75. // var_dump($base_dir);
  76. addItem($path,$zip,$base_dir);
  77. $zip->close();
  78. }
  79. //调用方法
  80. zip('解压的目录');
复制代码

압축 및 압축 풀기, PHP, zip


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿