php zipArchive只解压缩某些扩展名

Eki*_*kim 1 php unzip ziparchive

我需要解压缩上传的内容.但出于安全考虑,必须验证文件只是图像文件,这样有人就无法在zip中添加php,然后再运行它.

在进行解压缩时,我还需要预先检查文件结构.

$zip->extractTo($save_path . $file_name, array('*.jpg','*.jpeg','*.png','*.gif') );
Run Code Online (Sandbox Code Playgroud)

不返回null.有没有我可以用于此的参数,或者我必须使用正则表达式循环通过zip文件来匹配扩展并创建文件夹并使用代码保存文件?

谢谢

Cir*_*iro 5

来自php.net,处理.txt文件

<?php 
   $value="test.zip"; 
   $filename="zip_files/$value"; 
   $zip = new ZipArchive;
     if ($zip->open($filename) === true) {
      echo "Generating TEXT file.";
          for($i = 0; $i < $zip->numFiles; $i++) { 
             $entry = $zip->getNameIndex($i);
               if(preg_match('#\.(txt)$#i', $entry))
                {
                ////This copy function will move the entry to the root of "txt_files" without creating any sub-folders unlike "ZIP->EXTRACTO" function.
                 copy('zip://'.dirname(__FILE__).'/zip_files/'.$value.'#'.$entry, 'txt_files/'.$value.'.txt'); 
                } 
              }  
             $zip->close();
            }
    else{
         echo "ZIP archive failed";
        }
?>
Run Code Online (Sandbox Code Playgroud)