PHP Lấy tên của thư mục hiện tại


123

Tôi có một trang php bên trong một thư mục trên trang web của tôi.

Tôi cần thêm tên của thư mục hiện tại vào một biến, ví dụ:

$myVar = current_directory_name;

Điều này có khả thi không?

Câu trả lời:


246
getcwd();

hoặc là

dirname(__FILE__);

hoặc (PHP5)

basename(__DIR__) 

http://php.net/manual/en/ Chức năng.getcwd.php

http://php.net/manual/en/ Chức năng.dirname.php

Bạn có thể sử dụng basename()để lấy phần cuối của đường dẫn :)

Trong trường hợp của bạn, tôi muốn nói rằng bạn rất có thể đang muốn sử dụng getcwd(), dirname(__FILE__)sẽ hữu ích hơn khi bạn có một tệp cần bao gồm một thư viện khác và được đưa vào một thư viện khác.

Ví dụ:

main.php
libs/common.php
libs/images/editor.php

Trong của common.phpbạn, bạn cần sử dụng các chức năng trong editor.php, vì vậy bạn sử dụng

common.php:

require_once dirname(__FILE__) . '/images/editor.php';

main.php:

require_once libs/common.php

Bằng cách đó khi common.php require'dở trong main.php, lệnh gọi require_oncein common.phpsẽ bao gồm chính xác editor.phptrong images/editor.phpthay vì cố gắng tìm trong thư mục hiện tại nơi main.phpđược chạy.


5
basename(__DIR__)bằng PHP 5
Xeoncross

Điều này đang cho tôi toàn bộ con đường. Có cách nào để chỉ lấy tên thư mục?
Satch3000

13
@ Satch3000basename(getcwd())
Andreas Wong

2
Lưu ý rằng nếu bạn sử dụng một bao gồm hoặc một yêu cầu, __DIR__là đường dẫn của tập tin bao gồm và KHÔNG thư mục hiện hành
Sebastien Horin

Sử dụng basename(__DIR__) tiết kiệm trong ngày cho tôi. Cảm ơn rất nhiều vì đã chia sẻ!
Devner

18

Để chỉ lấy tên của thư mục nơi tập lệnh được thực thi:

//Path to script: /data/html/cars/index.php
echo basename(dirname(__FILE__)); //"cars"


11

Ví dụ

Your Path = /home/serverID_name/www/your_route_Dir/

NÀY_is_the_DIR_I_Want

Một linh hồn hoạt động:

$url = dirname(\__FILE__);
$array = explode('\\\',$url);
$count = count($array);
echo $array[$count-1];

3
OP dường như đã chấp nhận một câu trả lời cho vấn đề của họ. Mặc dù bạn đã gia tăng giá trị một cách rõ ràng, nhưng bạn có cần phải trút bỏ sự mệt mỏi của mình ở đây không?
Dutts

stackoverflow.com/help/formatting sẽ giải thích cách làm cho mọi thứ trở nên táo bạo tránh sử dụng chữ viết hoa, mà bạn đã chỉ ra khá đúng nghĩa là la hét trên internet.
Dutts

7

Trên thực tế, tôi tìm thấy giải pháp tốt nhất là như sau:

$cur_dir = explode('\\', getcwd());
echo $cur_dir[count($cur_dir)-1];

nếu dir của bạn là www \ var \ path \ Current_Path

thì nó trả về Current_path


4
Hãy chú ý, trong các máy chủ Linux, chúng tôi không sử dụng dấu gạch chéo ngược mà là dấu gạch chéo. PHP có một hằng số ma thuật để làm cho nó đa nền tảng, hãy xemPATH_SEPARATOR
Renoirb

2

$myVar = str_replace('/', '', $_SERVER[REQUEST_URI]);

libs / images /index.php
Kết quả: hình ảnh


Tôi nghĩ tất cả chúng ta đều đồng ý rằng Stack Overflow có một số người dùng phổ biến nhất trên mạng. Đó là một vấn đề. Cố gắng tìm ra các giải pháp sẽ vẫn hoạt động sau 20 năm nữa ở một ngôn ngữ kỳ lạ là một việc khó. Nếu một số người trong chúng ta gặp rắc rối, điều đó chỉ đi với lãnh thổ. :) ps Tôi không phải là người bỏ phiếu.
Adam Chalcraft

1

Nếu bạn có PATH và không muốn lo lắng nếu tập lệnh của bạn hoạt động trong thư mục mà bạn quan tâm thì điều này sẽ giải quyết:

basename(parse_url($_GET['dir_link'])['path'],PHP_URL_PATH)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.