Advertisement
Guest User

Untitled

a guest
Aug 18th, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. <?php
  2. // https://stackoverflow.com/questions/1334613/how-to-recursively-zip-a-directory-in-php/1334949#1334949
  3. function Zip($source, $destination)
  4. {
  5. if (!extension_loaded('zip') || !file_exists($source)) {
  6. return false;
  7. }
  8.  
  9. $zip = new ZipArchive();
  10. if (!$zip->open($destination, ZIPARCHIVE::CREATE)) {
  11. return false;
  12. }
  13.  
  14. $source = str_replace('\\', '/', realpath($source));
  15.  
  16. if (is_dir($source) === true)
  17. {
  18. $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
  19.  
  20. foreach ($files as $file)
  21. {
  22. $file = str_replace('\\', '/', $file);
  23.  
  24. // Ignore "." and ".." folders
  25. if( in_array(substr($file, strrpos($file, '/')+1), array('.', '..')) )
  26. continue;
  27.  
  28. $file = realpath($file);
  29.  
  30. if (is_dir($file) === true)
  31. {
  32. $zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));
  33. }
  34. else if (is_file($file) === true)
  35. {
  36. $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
  37. }
  38. }
  39. }
  40. else if (is_file($source) === true)
  41. {
  42. $zip->addFromString(basename($source), file_get_contents($source));
  43. }
  44.  
  45. return $zip->close();
  46. }
  47.  
  48. Zip('testes/', './compressed.zip');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement