ereg() per trovare file di cui so solo parte del nome

LaKanka

Utente Attivo
29 Ago 2008
166
0
0
Ciao a tutti, ho dovuto svuotare un pò lo spazio sul server cancellando molte immagini che non utilizzavo più... ma non tutte le immagini, solo alcune.

Le immagini in questione erano nella cartella "upload" ed il percorso era salvato all'interno del mio DB..
Mentre cancellavo i record nel DB e le relative foto all'interno della cartella dimenticavo che per ogni immagine caricata andavo a creare nella cartella "thumb" la miniatura delle stessa, nominandola:
PHP:
$new_name=$registrato->id.'_'.$photo->id.'.jpg';

Ora.. avendo perso $photo->id, poichè le ho già eliminate dal DB come faccio a cancellare solo quelle che iniziano con $registrato->id?

Ho provato una soluzione di questo tipo:
PHP:
$query="select * from registrati where foto=0";
$result = mysql_query($query, $conn);
while ($reg= mysql_fetch_object($result)) { 
	$id[$k]=$reg->id;
	$k++;
}
$directory=opendir("thumb");//apro la directory
while(false!==($file=readdir($directory))){ 
	if($file!="." && $file!="..") {//elimino il punto ed i doppi punti
		if(is_file("thumb/".$file)) { 
			for ($i=0;$i<$k;$i++) {
				if (ereg ($id[$i]."_([0-9]*).jpg", $file)) {
					unlink("thumb/".$file);
				}
			}
		}
	}
}
closedir($directory);
echo $k;

Ma sembra che non esegua nulla... non vedo neanche il valore di $k che vorrei vedere alla fine dello script!!

Qualcuno ha un'altra strada da suggerirmi?
 
le funzioni ereg per php sono deprecate a partire dalla versione 5.3, dovresti utilizzare le preg
 
Grazie, bella idea la glob!! non l'avevo mai usata...
penso di aver risolto così:
PHP:
$query="select * from registrati where foto=0";
$result = mysql_query($query, $conn);
while ($reg= mysql_fetch_object($result)) {
	$images = glob('thumb/'.$reg->id.'_*'); 
	foreach($images as $img) { 
	 	unlink($img);
	}
}
:fonzie:
 

Discussioni simili