Ce code peut renommer les fichiers/dossiers à l'intérieur d'un zip sans fichier extrait dans le dossier tmp.
<?php
$Zip_path='Your Zip File Path';
$index='Your files or folder referring index.if not defined leave it as 'null'. But if you rename a file it must enter that file index. Otherwise will show php error. I didn't block that error in the code.';
$path='path to rename folder/file path including that wanted to rename file/folder name.If you wish to rename folder end path with '/' ';
$Nname='Your New Name';
$zip = new ZipArchive;
$zip->open($Zip_path);
function ZipRenameFile($zip_p,$indx,$oldpath,$newname) {//rename using Ziprenamefile('Zip array,'File index', 'oldpath', 'New File Name')
$index_list=array();
$op='';
$Cnt=0;
$onout='';
$od=pathinfo($oldpath,PATHINFO_DIRNAME);
if(substr($oldpath, -1) == '/'){
for ($i=0; isset($zip_p->statIndex($i)['name']); $i++) {
if ($od == '.') {
if(strpos($zip_p->statIndex($i)['name'],$newname.'/') === 0) {
return ('already_exsist');
};
}
else {
if(strpos($zip_p->statIndex($i)['name'],$od.'/'.$newname.'/') === 0) {
return ('already_exsist');
};
};
if (strpos($zip_p->statIndex($i)['name'],$oldpath) === 0) {
$index_list[]=$i;
};
};
for ($i=0; isset($index_list[$i]); $i++) {
$op=($zip_p->statIndex($index_list[$i])['name']);
if (substr($op, -1) == '/'){
if ($od == '.') {
$op =preg_replace('|'.$oldpath.'|', $newname.'/', $op, 1);
}
else {
$op = preg_replace('|'.$oldpath.'|', $od.'/'.$newname.'/', $op, 1);
};
if ($zip_p->renameIndex($index_list[$i],$op)) {
$Cnt=$Cnt+1;
};
}
else {
if ($od == '.') {
$op = preg_replace('|'.$oldpath.'|', $newname.'/', $op, 1);
}
else {
$op = preg_replace('|'.$oldpath.'|', $od.'/'.$newname.'/', $op, 1);
};
if($zip_p->renameIndex($index_list[$i],$op) == True) {
$Cnt=$Cnt+1;
};
};
};
if ($Cnt==count($index_list)){
return('ok_rename');
}
else {
if ($Cnt != 0) {
return('ok_fail_rename');
};
return('fail_rename');
};
}
else {
if($od == '.'){
$onout='';
}
else {
$onout=$od.'/';
};
if($zip_p->renameIndex($indx,$onout.$newname) == True) {
return('ok_rename');
}
else {
return('already_exsist');
};
};
};
echo ZipRenameFile($zip,$index,$path,$Nname);
$zip->close();
?>
SI VOUS VOULEZ PLUS AIDE S'IL VOUS PLAÎT VÉRIFIER MON PROJET https://github.com/CodeLyokoXtEAM/Zip.Php/blob/master/Edit/Zip.php
que cela améliorer une réponse précédente upvoted? ou est-ce juste une publicité pour votre projet? –
Ce code est utile pour renommer à l'intérieur d'un fichiers et dossiers à l'intérieur d'un Zip.But Quelqu'un voulait d'autres codes comme supprimer des dossiers (y compris les sous-dossiers et les fichiers, il ne peut pas être fait directement). Je pense qu'ils doivent aider mon projet. Si vous n'êtes pas sûr de ce code, exécutez ce code et répondez à nouveau. – CodeLyokoXtEAM
@GillesGouaillardet Ce code peut renommer n'importe quel fichier/dossier dans un zip sans extraire le fichier dans le dossier tmp. Réponse précédente en faisant l'extraction de fils dans le dossier temporaire. – CodeLyokoXtEAM