2011-03-09 10 views
17

Así que obtuve este código para listar todas las imágenes jpg dentro de un directorio pero solo funciona en mi directorio raíz y no sé cómo dirigirlo al directorio de imágenes. ¿cómo puedo señalar PHP glob a un directorio específico?

<ul> 
<?php foreach (glob("N*T.jpg") as $image): ?> 
    <li> 
     <a href="<?php echo str_replace("T", "F", $image); ?>"> 
      <img src="<?php echo "$image"; ?>"> 
     </a> 
    </li> 
<?php endforeach; ?> 
</ul> 

Puede alguien ayudarme con eso?

Respuesta

35

esto debería funcionar:

glob('images/N*T.jpg'); 

lo contrario:

chdir('images'); 
glob('N*T.jpg'); 
+0

Me gustó el enfoque chdir. esto realmente me lo ha solucionado. gracias – Jake

+0

Probé chdir ('imágenes'); método pero no puede volver usando chdir (..); – CodeGuru

+0

@FlyingAtom el chdir ('imágenes') funcionará si hay una carpeta de imágenes en su directorio de trabajo actual. Es posible que desee comprobar dónde está utilizando getcwd() y después de hacer su negocio tal vez vuelva a cambiarlo al valor inicial. Si no funciona, utiliza directamente una ruta absoluta como '/ full/path/to/images' –

14

Simplemente antependa la ruta a la llamada a la función.

glob('/path/to/directory/N*T.jpg'); 

Tenga en cuenta que la matriz resultante también contendrá la ruta anterior. Si no desea que lo hacen

array_map('basename', glob('/path/to/directory/N*T.jpg')); 
+6

1 de recordando la ruta en los valores devueltos, y la solución array_map para obtener solo el nombre de archivo –

+0

Creo que tengo un problema con la ruta ... si no especifico, una ruta va a mi raíz de host y si especifico una ruta no me da imágenes de resultados ... ¿alguien tuvo ese problema con el alojamiento de FatCow? – Jake

+0

@Jake si no especifica una ruta, usará el directorio en el que se ejecuta el script. Si especifica una ruta absoluta, usará una ruta absoluta desde la raíz del servidor (no la raíz del documento en la que se encuentra su sitio web). ese es probablemente donde está tu problema. – Gordon

1

Sólo tiene que añadir la ruta de la llamada de función:

glob("/my/path/to/directory/N*T.jpg") 
1
$files = glob("/path/to/directory/N*T.jpg"); 
0

Según lo entendido, glob comienza con el directorio raíz. Por ejemplo veo imagen con este

<img src="<?php 
echo $_SERVER['REQUEST_SCHEME']. '://'. $_SERVER['SERVER_NAME']. '/public_images/logo_image_.gif'; 
?>"></img> 

A continuación, intente

echo pathinfo(glob('public_images/logo_image_.*')[0] , PATHINFO_EXTENSION). ' <br/>'; 

y ver gif. Localización de public_images es C:\wamp\www\public_images

Pero por ejemplo, con

echo pathinfo(glob($_SERVER['REQUEST_SCHEME']. '://'. $_SERVER['SERVER_NAME']. 'public_images/logo_image_.*')[0] , PATHINFO_EXTENSION). ' <br/>'; 

ver Notice: Undefined offset: 0 in C:\wamp\www\show_content.php on line ...

Sin embargo, si de archivo que se encuentra en el archivo de C:\wamp\www\some_dir llamada situada en C:\wamp\www\public_images, entonces es necesario utilizar echo pathinfo(glob('../public_images/logo_image_.*')[0] , PATHINFO_EXTENSION)

Cuestiones relacionadas