zip-файл с php – исключить папку

У меня есть одна функция zip, и я хочу, чтобы каждый файл внутри FOLDER делал zip

Итак, путь:

public_html / форма / ПАПКА / file_to_zip.xml

Как видно из приведенного ниже кода, массив $ files_to_zip имеет путь «FOLDER / file_to_zip.xml», и всякий раз, когда он застегивается на молнии, также застегивается папка, я хочу, чтобы файл был заархивирован.

Что я могу здесь сделать?

function create_zip($files = array(),$destination = '',$overwrite = true) { $valid_files = array(); if(is_array($files)) { foreach($files as $file) { if(file_exists($file)) { $valid_files[] = $file; } } } if(count($valid_files)) { $zip = new ZipArchive(); if($zip->open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) { return false; } foreach($valid_files as $file) { $zip->addFile($file,$file); } $zip->close(); return file_exists($destination); } else { return false; } } $loja=$_GET['loja']; $connect = new MySQL('localhost','iloja_phc','sexparade'); $connect->Database('iloja_phc'); $posts = $connect->Fetch('ipad'); if ($posts && mysql_num_rows($posts) > 0) { echo "Nome - ID - Email:<BR>"; while ($record = mysql_fetch_array($posts)) { $files_to_zip = array($loja.'/CL'.$record['rand'].'.xml'); $result = create_zip($files_to_zip,'CL'.$record['rand'].'.zip'); echo "<a href='/formulario/CL".$record['rand'].".zip'>".$record['nome']."</a> - ".$record['id']." - EMAIL: ".$record['email']."</br>"; } } else { echo "Erro! Algo correu mal..."; } 

Когда вы звоните

 $zip->addFile($file,$file); 

первым параметром является путь к файлу, а второй – «локальное имя». Если вы удалите папку из второго параметра, вы получите то, что вам нужно.

Пример:

 $zip->addFile("foo/bar.txt","bar.txt); 

Для вашего конкретного случая, я думаю, это должно работать:

 $zip->addFile($file, basename($file)); 

Источник: комментарии руководства PHP http://php.net/manual/en/ziparchive.addfile.php