2015-08-25 4 views
0

Я использую следующую функцию для сжатия файлов, но в каждом каталоге он может автоматически добавлять два файла, как показано ниже (красный цвет).PHP Ziparchive при размещении linux

Как сжать файлы, исключая эти нежелательные файлы?

function ziparchive($name,$folder){ 
    // create object 
    $ziparchivename= $name.'.zip'; 
    //echo $ziparchivename; 
    $zip = new ZipArchive(); 

    // open archive 
    if ($zip->open($ziparchivename, ZIPARCHIVE::CREATE) !== TRUE) { 
    die ("Could not open archive"); 
    } 

    // initialize an iterator 
    // pass it the directory to be processed 
    $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder)); 

    // iterate over the directory 
    // add each file found to the archive 
    foreach ($iterator as $key=>$value) { 
    $zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key"); 
    } 

    // close and save archive 
    $zip->close(); 
    echo "Archive created successfully."; 
} 
+0

Попробуйте выполнить обратный шаблон dirs ('.' и' ..') в итераторе 'foreach'. –

ответ

0

Некоторые вещи, как это должно работать.

$skipFiles = array('.', '..'); 

foreach ($iterator as $key=>$value) { 

if(!in_array($key, $skipFiles)){ 
    $zip->addFile(realpath($key), $key) or die ("ERROR: Could not add file: $key"); 
} 

php manual in_array

Еще одно место для поиска является array_search. Другим местом для поиска является array_search.

+0

благодарит вас, но он по-прежнему не улучшает –

+0

Проверьте значение $ key и $ value. Убедитесь, что вы используете правильный. –