2010-12-30 6 views
5

In data2 directory, ho questi file:Perché la funzione PHP glob() restituisce file che non corrispondono al carattere jolly?

alt text

Con questo codice (in esecuzione su Mac), voglio ottenere solo i file che terminano con .xls:

$file_names = glob('data2/*.xls'); 
foreach ($file_names as $file_name) { 
    echo $file_name . '<br/>'; 
} 

I ci si aspetterebbe che questo codice restituisse un file 27template.xls, tuttavia restituisce anche i file con TEMP e aggiunge un .xls a questi:

alt text

Aggiunto: anche se cambio smaller.xls a smaller.xlsx allora non lo trova come previsto, ma se cambio a smaller.NNN che trova smaller.NNN.xls.

Come utilizzare glob() per ottenere solo i file .xls?

+4

Che cosa? –

+2

Impossibile riprodurre su Mac OS X 10.6.5 con PHP 5.3.0. Restituisce solo '27template.xls' come previsto per me. – BoltClock

+4

Sei sicuro che i file non abbiano questa estensione, nascosta nell'interfaccia utente? – regilero

risposta

0

Un nome file come data2/smaller.xlsTEMP.xls corrisponde all'espressione glob di data2/*. Xls, quindi verrà restituito da glob ... sei sicuro che non esiste? (Forse l'equivalente Mac di finestre nascoste)

Provate a combinare due espressioni glob con array_diff()

$file_names = array_diff(glob('data2/*.xls'),glob('data2/*.*.xls')); 

Il secondo glob restituisce le voci che non si desidera, poi l'array_diff() filtri che stabiliscono fuori il risultato dal primo glob

EDIT

o provare a chiamare clearstatcache() poco prima della glob, nel caso in cui PHP è memorizzato nella cache le voci di directory da una query precedente

2

Penso che sia perché l'estensione che stai guardando potrebbe non essere quella reale (nascosta di default su Finder). È possibile controllare l'estensione reale facendo clic sul file e fare clic su "Ottieni informazioni". Se si desidera visualizzare le estensioni di tutti i file è necessario seguire le fasi della documentazione di Apple:

Per mostrare l'estensione per tutti i file, scegli Finder> Preferenze e fare clic su Avanzate, quindi selezionare "Mostra tutte le estensioni di file ".

Problemi correlati