Вопрос по php – Получить родительскую папку текущего файла PHP

24

Я довольно много искал это, поэтому мне жаль, если это обман.
В любом случае мне нужно получить имя папки, в которой находится текущий файл. Например, я хочу преобразовать что-то вродеexample.com/folder/subfolder/file.php вsubfolder.
 Мой текущий кодdirname($_SERVER['PHP_SELF'])но это возвращает/folder/subfolder вместоsubfolder, Спасибо!

Ваш Ответ

5   ответов
50

Самый простой способ:

basename(__DIR__);

http://php.net/manual/en/language.constants.predefined.php

это должно быть помечено как правильный ответ.
Теперь это новый правильный ответ. :) Andrey
@taylorcressy, кажется, что вышеупомянутый ответ был дан до этого ... также мы не используем магическую константу
Разве это не должно быть помечено как правильный ответ?$_SERVER['PHP_SELF'] может вернуть файл, в который включен «текущий файл». & Quot; текущий файл & quot; являетсяDIR право? Или я что-то упустил?
@MarcelDjaman Я понимаю, почему другой был помечен как правильный. Я просто уточняю, что это НАСТОЯЩИЙ правильный ответ. Технически, первый ответ не является правильным во всех случаях (т.е. во включенном файле)
3
$folder = basename(dirname(__FILE__));
38

Вам нужно объединить существующий код, используяdirname() с призывом кbasename():

$parent = basename(dirname($_SERVER['PHP_SELF']));
4

dirname() используется сbasename() будет работать ... и это, если вы хотите получить их все:

$folders = explode ('/', $_SERVER['PHP_SELF']);

Теперь $ folder будет содержать массив всех имен папок.

Приветствия.

Хороший вопрос - спасибо за добавление этой мысли.
@DaveRandom Еще одна причина для выполнения тестов, прежде чем вводить код в работу! :) Но да, если это кого-то раздражает, я думаю, что единственный другой способ - это использовать регулярные выражения.
При этом следует остерегаться пустого элемента с индексом 0, который будет результатом пути, начинающегося с/
0
str_replace('/','',$_SERVER[REQUEST_URI]);

Это работает для php7:str_replace('/','',$_SERVER["REQUEST_URI"]);

Результат:

lib/**images**/index.php

images

Похожие вопросы