2011-03-09 41 views
17

Vì vậy, tôi nhận được mã này để liệt kê tất cả các hình ảnh jpg bên trong một thư mục nhưng nó chỉ hoạt động trên thư mục gốc của tôi và tôi không biết làm thế nào để trỏ nó vào thư mục hình ảnh của tôi. làm thế nào tôi có thể trỏ PHP glob vào một thư mục cụ thể?

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

Có ai giúp tôi với điều đó không?

Trả lời

35

này nên làm việc:

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

Nếu không:

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

Tôi thích phương pháp tiếp cận chdir. điều này đã thực sự giải quyết nó cho tôi. cảm ơn bạn – Jake

+0

Tôi đã thử chdir ('hình ảnh'); phương pháp nhưng không thể lấy lại bằng cách sử dụng chdir (..); – CodeGuru

+0

@FlyingAtom chdir ('hình ảnh') sẽ hoạt động nếu có thư mục hình ảnh trong thư mục làm việc hiện tại của bạn. bạn có thể muốn kiểm tra nơi mà đang sử dụng getcwd() và sau khi bạn làm kinh doanh của bạn có thể thay đổi nó trở lại giá trị ban đầu. Nếu nó không hoạt động như trực tiếp sử dụng đường dẫn tuyệt đối như '/ full/path/to/images' –

14

Chỉ cần thêm đường dẫn đến lệnh gọi hàm.

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

Lưu ý rằng mảng kết quả cũng sẽ chứa đường dẫn được thêm trước. Nếu bạn không muốn điều đó làm

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

1 cho nhớ đường dẫn trong các giá trị trả về, và giải pháp array_map để lấy chỉ tên tập tin –

+0

Tôi tin rằng tôi có một vấn đề với đường dẫn ... nếu tôi không chỉ định đường dẫn đến gốc máy chủ của tôi và nếu tôi chỉ định đường dẫn, nó sẽ mang lại cho tôi hình ảnh không có kết quả ... bất kỳ ai gặp vấn đề với việc lưu trữ FatCow? – Jake

+0

@Jake nếu bạn không chỉ định đường dẫn nó sẽ sử dụng thư mục kịch bản được thực thi. Nếu bạn chỉ định đường dẫn tuyệt đối, nó sẽ sử dụng đường dẫn tuyệt đối từ gốc máy chủ (không phải là tài liệu gốc trang web của bạn). đó có thể là vấn đề của bạn. – Gordon

1

Chỉ cần thêm đường dẫn đến cuộc gọi chức năng của bạn:

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

Như đã hiểu glob bắt đầu với thư mục gốc. Ví dụ tôi thấy hình ảnh với điều này

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

Sau đó thử

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

và xem gif. Vị trí của public_imagesC:\wamp\www\public_images

Nhưng ví dụ với

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

thấy Notice: Undefined offset: 0 in C:\wamp\www\show_content.php on line ...

Tuy nhiên, nếu từ tập tin nằm ở tập tin C:\wamp\www\some_dir cuộc gọi nằm ở C:\wamp\www\public_images, sau đó cần phải sử dụng echo pathinfo(glob('../public_images/logo_image_.*')[0] , PATHINFO_EXTENSION)

Các vấn đề liên quan