Ciao, forse questa domanda vi è già stata fatta ma dopo una ricerca nel forum non ho trovato nulla che mi spieghi come fare.
Ecco la domanda: sto implementando una semlice classe che mi permetta tramite un glob() di iterare una directory inviando contestualmente delle direttive di ricerca.
La classe pura e semplice è questa:
Codice PHP:
class ls {
// $file = nome di file da cercare (valgono i path di ricerca tipici dei filesystem e le regex)
// $extensions = un array monodimensionale con le estensioni dei file da cercare.
function __construct(Array $extensions, $file = '*') {
print_r(glob("$file.{".implode(',',$extensions)."}", GLOB_BRACE));
} // __construct()
} // fine della classe ls
per ora è embrionale e riporta solo un array con i file presenti nella directory (per ora non c'è nemmeno la possibilità di aggiungere un path diverso da quello da cui è chiamata la classe).
Chiamandola a vuoto...
Codice PHP:
$ext = array ('php');
$obj = new ls($ext);
Funziona benissimo e mi riporta i file in un arrai visualizzato da print_r() ma appena inizio a "giocare sporco" iniziano i problemi.
Ad esempio se inserisco come secondo parametro un pattern di ricerca come questo:
Codice PHP:
array ('php');
$file = '/\ls$/i.*';
$obj = new ls($ext, $file);
mi riporta un array vuoto, che però di per se non ha senso dato che doveva presentarmi almeno se stessa (il file si chiama ls.class.php), credo che il problema risieda nella regex.
In effetti quella regex associata alla array di estensioni, una volta "sciolto" dovrebbe darmi un pattern di ricerca così: ls.*.php ma credo proprio che sbaglio qualche cosa nella regex, inoltre se lo scrivo al posto della regex, lo script mi va in errore (ma non so quale perché il maledetto server su cui lavoro ora e a cui non posso accedere non mi fa vedere il log di errore nemmeno con le direttive error_reporting eccetera).
Ci capite qualche cosa cortesemente?