2017-10-08 64 views
1

我試圖提取我的服務器上的zip文件,有時這些文件包含MAC_STORE和其他格式,用戶不應放入zip文件。如何僅提取圖像文件並刪除文件的其餘部分

這裏是我試過

public static function extractItem($path, $ext_path) { 
     $zip = new ZipArchive; 

     $zip->open($path); 
     $filename = array(); 

    for ($i = 0; $i < $zip->numFiles; $i++) { 
     $stat = $zip->statIndex($i); 
     if ($stat['size'] != 0) { 
      $filename[] = basename($stat['name']); 
     } 
    } 
    } 

如果zip文件包含JPG格式,JPEG,PNG那麼也沒關係,如果它包含其他格式我要刪除它們

這裏是的$filename array

Array 
(
    [0] => Screen Shot 2017-10-04 at 12.38.47 AM.png 
    [1] => ._Screen Shot 2017-10-04 at 12.38.47 AM.png 
    [2] => Screen Shot 2017-10-04 at 12.38.50 AM.png 
    [3] => ._Screen Shot 2017-10-04 at 12.38.50 AM.png 
) 

響應在zip文件中只有兩個圖像

+0

什麼' PHP_EOL'在那裏做?文件名不是文本文件...你在哪裏檢查代碼中的文件擴展名? – arkascha

回答

0

你可以僅僅只提取文件與.jpg格式,JPEG,PNG延伸,在這裏解釋: php zipArchive unzip only certain extensions

但是,你會用這個代替替換正則表達式取景器:

preg_match('#.+([jpg|jpeg|png])$#i', $entry) 
+0

我的zip文件中有兩個文件,循環運行四次? – user8740586

相關問題