2011-03-09 5 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. это действительно решило это для меня. thank you – Jake

+0

Я пробовал chdir ('images'); метод, но не могу вернуться с помощью chdir (..); – CodeGuru

+0

@FlyingAtom chdir ('images') будет работать, если в вашем рабочем каталоге есть папка с изображениями. вы можете проверить, где именно используется getcwd(), и после того, как вы делаете свой бизнес, возможно, измените его на первоначальное значение. Если это не работает, как прямое использование абсолютного пути, например '/ full/path/to/images' –

14

Просто добавьте путь к вызову функции.

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

Обратите внимание, что результирующий массив также будет содержать заранее заданный путь. Если вы не хотите, чтобы сделать

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

+1 для запоминание пути в возвращаемых значениях и решение array_map для получения только имени файла –

+0

Я считаю, что у меня есть проблема с pathing ... если я не укажу, что путь идет к моему корню хоста, и если я укажу путь, он не даст мне никаких изображений результатов ... у кого-нибудь была эта проблема с хостингом FatCow? – Jake

+0

@ Jake, если вы не указали путь, в котором он будет использовать каталог, в который выполняется скрипт. Если вы укажете абсолютный путь, он будет использовать абсолютный путь от корня сервера (а не к корню документа, на котором находится ваш сайт). вероятно, именно там, где проблема. – Gordon

1

Просто добавьте путь к вызову функции:

glob("/my/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\some_dir вызова, расположенного по адресу C:\wamp\www\public_images, то нужно использовать echo pathinfo(glob('../public_images/logo_image_.*')[0] , PATHINFO_EXTENSION)

Смежные вопросы