Cancellazione specifici files in una folder php

Peterrey76

Utente Attivo
27 Mar 2020
40
0
6
Salve ragazzi avrei bisogno di cancellare files in una folder contenenti nel nome una specifica 'parte del nome'.
Eg . nome del file > 123456789-45-prodotto.jpg.
il 45 e' un id effettivamente, ma nella cartella ci sono files con altri id ovviamente con il basename strutturato allo stesso modo. ho questo codice:
Codice:
<?php
$leave_files = array($prodotto1,$articolo1);
foreach( glob("files/$id/*") as $file2 ) {
if( !in_array(basename($file2), $leave_files) )
unlink($file2);}
?>

allora, prodotto e articolo sono i due file appena aggiornati che sono presenti nel database per cui effettuato l'upload l'array leave_files mi conserverà i files appena caricati e cancellerà tutti gli altri.
Questo codice cancella tutti i file in cartella tranne prodotto1 e articolo1 ma io avrei bisogno di cancellare solo quelli con id 45 contenuto nel nome.
Quindi probabilmente si dovrebbe cercare nel basename di ogni file la sottostringa -id(45)- ed eliminarli ma non sono riuscito a farlo visto che non sono molto bravo con php.
Qualche idea?
Grazie
 
Salve ragazzi avrei bisogno di cancellare files in una folder contenenti nel nome una specifica 'parte del nome'.
Eg . nome del file > 123456789-45-prodotto.jpg.
il 45 e' un id effettivamente, ma nella cartella ci sono files con altri id ovviamente con il basename strutturato allo stesso modo. ho questo codice:
Codice:
<?php
$leave_files = array($prodotto1,$articolo1);
foreach( glob("files/$id/*") as $file2 ) {
if( !in_array(basename($file2), $leave_files) )
unlink($file2);}
?>

allora, prodotto e articolo sono i due file appena aggiornati che sono presenti nel database per cui effettuato l'upload l'array leave_files mi conserverà i files appena caricati e cancellerà tutti gli altri.
Questo codice cancella tutti i file in cartella tranne prodotto1 e articolo1 ma io avrei bisogno di cancellare solo quelli con id 45 contenuto nel nome.
Quindi probabilmente si dovrebbe cercare nel basename di ogni file la sottostringa -id(45)- ed eliminarli ma non sono riuscito a farlo visto che non sono molto bravo con php.
Qualche idea?
Grazie
Salve a tutti ho risolto in questo modo:

Salve ragazzi avrei bisogno di cancellare files in una folder contenenti nel nome una specifica 'parte del nome'.
Eg . nome del file > 123456789-45-prodotto.jpg.
il 45 e' un id effettivamente, ma nella cartella ci sono files con altri id ovviamente con il basename strutturato allo stesso modo. ho questo codice:
Codice:
<?php
$leave_files = array($prodotto1,$articolo1);
foreach( glob("files/$id/*") as $file2 ) {
if( !in_array(basename($file2), $leave_files) )
unlink($file2);}
?>

allora, prodotto e articolo sono i due file appena aggiornati che sono presenti nel database per cui effettuato l'upload l'array leave_files mi conserverà i files appena caricati e cancellerà tutti gli altri.
Questo codice cancella tutti i file in cartella tranne prodotto1 e articolo1 ma io avrei bisogno di cancellare solo quelli con id 45 contenuto nel nome.
Quindi probabilmente si dovrebbe cercare nel basename di ogni file la sottostringa -id(45)- ed eliminarli ma non sono riuscito a farlo visto che non sono molto bravo con php.
Qualche idea?
Grazie
Salve a tutti ho risolto in questo modo:
Codice:
$leave_files = array($prodotto,$articolo);
$find="-$id-";
foreach(glob("files/$id/*") as $file2){
if( !in_array(basename($file2), $leave_files)){
$file_found=explode($find,$file2);
unlink($file_found[0].$find.$file_found[1]);
}}

in questo modo elimino tutti i file contenenti l' id di sessione o di pagina fate un po' Voi tranne quelli appena aggiornati contenuti nell'array leave_files.
L'esempio del nome del file è riportato nel primo post.
Spero sia utile a qualcuno.
 

Discussioni simili