La plupart des fonctions sur les fichiers existent également pour manipuler les fichiers GZIP.
Fonction | Description |
---|---|
readgzfile("file.gz") |
Affiche le contenu du fichier GZIP donné |
gzfile("file.gz") |
Retourne le contenu du fichier GZIP lignes par lignes dans un tableau |
gzopen("file.gz",'r') |
Ouvre en lecture le fichier GZIP donné |
gzclose($zh) |
Ferme la resource |
gzpassthru($zh) |
Affiche le contenu |
gzread($zh, 1024) |
Retourne x octets |
gzgetc($zh) |
Retourne un caractère |
gzgets($zh) |
Retourne une ligne |
gzgetss($zh) |
Pareil de gzgets mais supprime tous les octets nuls, balises HTML et PHP trouvées |
gzwrite($zh, "hello") |
Écrit du texte dans le fichier ouvert |
gzrewind($zh) |
Revient au début du fichier |
gzeof($zh) |
Vérifie si le pointeur est à la fin du fichier |
gzseek($zh, 2, SEEK_CUR) |
Modifie la position du pointeur interne |
gztell($zh) |
Retourne la position courante du pointeur interne |
Les fonctions zip permettent de lire les fichiers zip.
Pour écrire dans un zip, il faut utiliser la classe ZipArchive
.
Ouvre un fichier ZIP et retourne une ressource qui pourra être utilisée pour lire le contenu.
<?php
$zh = zip_open("file.zip");
Ferme la ressource
<?php
zip_close($zh);
Retourne le prochain fichier présent dans le zip
<?php
$h = zip_read($zh);
Retourne le nom du fichier (retourné par zip_read
)
<?php
$zh = zip_open("tmp.zip");
while($h = zip_read($zh)) {
echo zip_entry_name($h) . "\n";
}
/*
fileupload/
fileupload/fileupload.js
fileupload/fileupload.less
fileupload/index.html
tmp.txt
*/
Retourne la taille décompressée du fichier (retourné par zip_read
)
<?php
$size = zip_entry_filesize($h);
Retourne la taille compressée du fichier (retourné par zip_read
)
<?php
$size = zip_entry_compressedsize($h);
Retourne le contenu du fichier (retourné par zip_read
).
Retourne une chaîne de caractères vide s’il s’agit d’un répertoire.
<?php
$txt = zip_entry_read($h, zip_entry_filesize($h));
Crée un objet ZipArchive
<?php
$zip = new ZipArchive();
Ouvre le zip.
<?php
$zip->open("file.zip");
Ferme le zip.
<?php
$zip->close();
Retourne les infos (nom, index, etc) d’un fichier du zip à l’index spécifié.
<?php
$data = $zip->statIndex(3);
print_r($data);
/* Array (
[name] => foobar/baz
[index] => 3
[crc] => 499465816
[size] => 27
[mtime] => 1123164748
[comp_size] => 24
[comp_method] => 8
) */
<?php
// Ouvrir le zip
$zip = new ZipArchive();
$zip->open('file.zip');
$aFile = array();
$seek = 0;
// Récupérer tous les fichiers et les mettre dans "/tmp"
while($data = $zip->statIndex($seek++)) {
$aFile[] = $data['name'];
}
$zip->extractTo('/tmp', $aFile);
Retourne le nom du fichier à l’index spécifié.
<?php
$file = $zip->getNameIndex(3);
Propriété: nombre de fichiers à l’intérieur du fichier zip
<?php
for($i = 0; $i < $zip->numFiles; $i++) {
echo $zip->getNameIndex($i);
}
Extrait les fichiers spécifiés dans le répertoire donné.
Extrait toute l’archive si la liste des fichiers à extraire est omise.
<?php
$zip->extractTo("/tmp", array("file"));
Ajoute un répertoire vide à l’intérieur du fichier zip
<?php
$zip->addEmptyDir('exemple');
Ajoute un fichier à l’intérieur du fichier zip.
Par défaut, ajoute le fichier dans le zip sous le même nom et le même répertoire que le chemin donné.
<?php
// Ajoute le fichier "file" au zip
$zip->addFile('file');
<?php
// Ajoute le fichier "/tmp/file" à la racine du zip
$zip->addFile('/tmp/file', 'myfile');
<?php
// Ajoute le fichier "subdir/file"
$file = 'subdir/file';
$path = substr($file, 0, strrpos($file, '/'));
$zip->addEmptyDir($path);
$zip->addFile(UPLOAD_DIR . $file, $file);
Retourne l’index du fichier avec le nom donné s’il existe dans le zip ou false
.
<?php
$idx = $obj->locateName('file');
Crée un objet PharData et ouvre l’archive zip ou tar / tar.gz.
<?php
$tar = new PharData("file.tar");
Extrait les fichiers spécifiés dans le répertoire donné.
Extrait toute l’archive si la liste des fichiers à extraire est omise.
<?php
$tar->extractTo("/tmp", array("file"));
Ajoute un répertoire vide à l’intérieur de l’archive
<?php
$tar->addEmptyDir('exemple');
Ajoute un fichier à l’intérieur de l’archive.
Par défaut, ajoute le fichier dans l’archive sous le même nom et le même répertoire que le chemin donné.
<?php
// Ajoute le fichier "file" à l'archive
$tar->addFile('file');
<?php
// Ajoute le fichier "/tmp/file" à la racine de l'archive
$tar->addFile('/tmp/file', 'myfile');
L’objet PharData
est itérable, on peut donc lister le contenu de l’archive en utilisant un foreach
.
Retourne des éléments PharFileInfo
.
<?php
$tar = new PharData('archive.tar.gz');
foreach($tar as $file) {
// Affiche le nom du fichier
echo $file;
// C'est un répertoire: lister le contenu
if($file->isDir()) {
echo ':';
$dir = new PharData($file->getPathname());
foreach($dir as $child) {
echo "<br />$child";
}
}
echo "<br />";
}