2010-12-30 14 views
5

En data2 directorio, tengo estos archivos:¿Por qué la función PHP glob() devuelve archivos que no coinciden con el comodín?

alt text

Con el siguiente código (que se ejecuta en Mac), quiero sólo para obtener los archivos que terminan con .xls:

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

I se esperaría que este código volvería un archivo 27template.xls, sin embargo, también devuelve los archivos con TEMP en ellos y añade un .xls a ellos:

alt text

Agregado: También si cambio smaller.xls a smaller.xlsx entonces se concluye que no es como se esperaba, pero si lo cambio a smaller.NNN encuentra smaller.NNN.xls.

¿Cómo puedo utilizar glob() para conseguir solamente .xls archivos?

+4

Lo que el qué? –

+2

No se puede reproducir en Mac OS X 10.6.5 con PHP 5.3.0. Devuelve solo '27template.xls' como esperaba para mí. – BoltClock

+4

¿Estás seguro de que los archivos no tienen esta extensión, oculta en tu UI? – regilero

Respuesta

0

Un nombre de fichero como data2/smaller.xlsTEMP.xls se ajusta a su expresión pegote de datos 2/*. Xls, por lo que será devuelto por glob ... ¿está seguro de que no existe? (Tal vez el equivalente de Mac de Windows oculta)

trate de combinar dos expresiones glob con array_diff()

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

El segundo pegote devuelve aquellas entradas que no quieren, entonces la array_diff() que establecen filtros del resultado de la primera pegote

EDITAR

o intentar llamar clearstatcache() justo antes de su glob, en el caso de PHP ha almacenado en caché entradas de directorio de una consulta anterior

2

creo que se debe a la extensión que está viendo podría no ser la real (hided de forma predeterminada en Finder). Puede verificar la extensión real haciendo clic en el archivo y hacer clic en "Obtener información". Si desea mostrar las extensiones de todos los archivos que tiene que seguir los pasos por parte de la documentación de Apple:

Para mostrar la extensión para todos los archivos, seleccione Finder> Preferencias y haga clic en Avanzadas y, a continuación, seleccione "Mostrar todas las extensiones de archivo "

Cuestiones relacionadas