Cancellazione specifici files in una folder php

Peterrey76

Utente Attivo
27 Mar 2020
34
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
 

Peterrey76

Utente Attivo
27 Mar 2020
34
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 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.