PHP Отримайте назву поточного каталогу


123

Я маю сторінку php всередині папки на своєму веб-сайті.

Мені потрібно додати ім'я поточного каталогу у змінну, наприклад:

$myVar = current_directory_name;

Чи можливо це?

Відповіді:


247
getcwd();

або

dirname(__FILE__);

або (PHP5)

basename(__DIR__) 

http://php.net/manual/en/function.getcwd.php

http://php.net/manual/en/function.dirname.php

Ви можете скористатися basename()для отримання зворотної частини шляху :)

У вашому випадку я б сказав, що ви, швидше за все, хочете використовувати getcwd(), dirname(__FILE__)є більш корисним, коли у вас є файл, який повинен містити іншу бібліотеку і включений до іншої бібліотеки.

Наприклад:

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

У своєму common.phpвам потрібно використовувати функції в editor.php, тому ви використовуєте

common.php:

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

main.php:

require_once libs/common.php

Таким чином , коли common.php знаходиться require'dв main.php, виклик require_onceв common.phpправильно включає editor.phpв images/editor.phpзамість того , щоб шукати в поточній директорії , де main.phpвиконується.


5
А basename(__DIR__)в PHP 5
Xeoncross

Це дає мені весь шлях. Чи є спосіб отримати лише ім’я каталогу?
Satch3000

13
@ Satch3000basename(getcwd())
Andreas Wong

2
Зауважте, що якщо ви використовуєте включений або необхідний, __DIR__це шлях включеного файлу, а НЕ поточний каталог
Sebastien Horin

Використання basename(__DIR__) збереженого дня для мене. Дякую тонну за обмін!
Devner

18

Щоб отримати лише ім'я каталогу, де виконується сценарій:

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


11

Наприклад

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

THIS_is_the_DIR_I_Want

Душа, яка працює:

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

3
Здається, ОП вже прийняла відповідь на свою проблему. Хоча ви чітко додали цінність, чи потрібно тут виводити свої розчарування?
Датц

stackoverflow.com/help/formatting пояснить, як зробити речі сміливими, уникаючи використання ковпачків, що ви цілком справедливо вказали, позначає кричали в Інтернеті.
Датс

7

Насправді я знайшов найкращим рішенням таке:

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

якщо ваш реєстр www \ var \ path \ Current_Path

тоді це повертає Current_path


4
Будьте уважні, на серверах Linux ми використовуємо не зворотну косу рису, а похилу. У PHP є магічна константа, щоб зробити її крос-платформою, дивітьсяPATH_SEPARATOR
перегляньте

2

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

libs / images /index.php
Результат: зображення


Я думаю, що ми всі погодимось із тим, що у Stack Overflow є одні з найбільш педантичних користувачів в мережі. У чомусь справа. Спроба отримати рішення, які все ще працюватимуть через 20 років у дивному регіоні, є складним. Якщо хтось із нас накрутив, це просто йде з територією. :) ps Я не був нижчим.
Адам Чалкрафт

1

Якщо у вас є PATH і ви не хочете занепокоєти, чи ваш сценарій працює в цікавій вам папці, це вийде:

basename(parse_url($_GET['dir_link'])['path'],PHP_URL_PATH)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.