2011-03-09 16 views
17

Quindi ho ottenuto questo codice per elencare tutte le immagini jpg all'interno di una directory ma funziona solo sulla mia directory principale e non so come indicarlo alla mia directory di immagini. come posso puntare PHP glob a una directory specifica?

<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> 

Qualcuno mi può aiutare con questo?

risposta

35

questo dovrebbe funzionare:

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

Altrimenti:

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

Mi è piaciuto l'approccio chdir. questo l'ha davvero risolto per me. grazie – Jake

+0

Ho provato chdir ('immagini'); metodo ma non posso tornare usando chdir (..); – CodeGuru

+0

@FlyingAtom chdir ('images') funzionerà se c'è una cartella di immagini nella directory di lavoro corrente. potresti voler controllare dove si sta usando getcwd() e dopo aver fatto il tuo lavoro, potresti ricondurlo al valore iniziale. Se non funziona come direttamente usa un percorso assoluto come '/ full/path/to/images' –

14

Basta anteporre il percorso alla chiamata di funzione.

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

Si noti che la matrice risultante conterrà anche il percorso anteposto. Se non si desidera che

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

+1 per ricordando il percorso nei valori restituiti e la soluzione array_map per ottenere solo il nome file –

+0

Credo di avere un problema con il pathing ... se non specificherò un percorso è diretto alla mia root host e se specificherò un path non mi darà immagini dei risultati ... qualcuno ha avuto quel problema con l'hosting FatCow? – Jake

+0

@Jake se non si specifica un percorso verrà utilizzata la directory in cui viene eseguito lo script. Se si specifica un percorso assoluto, verrà utilizzato un percorso assoluto dalla radice del server (non la radice del documento in cui si trova il sito Web). questo è probabilmente il tuo problema. – Gordon

1

Basta aggiungere il percorso della chiamata di funzione:

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

Come capire glob inizia con la directory principale. Per esempio vedo immagine con questo

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

Quindi provare

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

e vedere gif. Location di public_images è C:\wamp\www\public_images

Ma per esempio con

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

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

Tuttavia, se da file che si trova in file di C:\wamp\www\some_dir chiamata situato a C:\wamp\www\public_images, quindi bisogno di usare echo pathinfo(glob('../public_images/logo_image_.*')[0] , PATHINFO_EXTENSION)

Problemi correlati