2011-03-09 33 views
17

所以我得到了這個代碼來列出目錄中的所有jpg圖像,但它只能在我的根目錄下工作,我不知道如何將它指向我的圖像目錄。 如何將PHP glob指向特定的目錄?

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

誰能幫助我嗎?

回答

35

這應該工作:

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

否則:

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

我喜歡chdir的方法。這真的解決了我的問題。謝謝 – Jake 2011-03-09 23:05:44

+0

我試過chdir('images');方法,但不能回頭使用chdir(..); – CodeGuru 2013-06-16 07:34:37

+0

@FlyingAtom如果當前工作目錄中有圖像文件夾,chdir('images')將會起作用。您可能想要檢查使用getcwd()的位置,並且在完成業務後可能會將其更改回初始值。如果它不工作就像直接使用絕對路徑,如'/ full/path/to/images' – 2014-11-13 12:58:52

14

只需將函數調用的路徑加上即可。

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

請注意,生成的數組也將包含前綴路徑。如果你不希望這樣做

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

+1記住返回值中的路徑,並使用array_map解決方案來獲取文件名 – 2011-03-09 21:24:26

+0

我相信我有問題與路徑...如果我沒有指定一個路徑是去我的主機根,如果我確實指定了一個路徑,它給了我沒有結果圖像...任何人都有FatCow託管的這個問題? – Jake 2011-03-09 21:37:55

+0

@Jake如果你不指定一個路徑,它將使用腳本在其中執行的目錄。如果你指定一個絕對路徑,它將使用從服務器根(不是你的網站所在的文檔根目錄)的絕對路徑。這可能是您的問題所在。 – Gordon 2011-03-09 21:49:21

1

的路徑只需添加到您的函數調用:

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

據瞭解glob從根目錄開始。比如我看到這個

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

圖像然後嘗試

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

gif。的public_images位置是C:\wamp\www\public_images

但例如與

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

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

但是,如果從位於位於C:\wamp\www\public_imagesC:\wamp\www\some_dir調用文件的文件,那麼就需要使用echo pathinfo(glob('../public_images/logo_image_.*')[0] , PATHINFO_EXTENSION)

相關問題