как получить имя папки корневого каталога в php вместо пути

#php

#php

Вопрос:

Я хочу получить имя папки корневого каталога в php. Я знаю, что можно получить путь к корневому каталогу, используя _DIR_ , но мне нужно имя папки. Есть ли у нас функция php, которая может это сделать? В случае, если решение использует регулярные выражения для пути к каталогу, совместимо ли оно во всех системных средах? например, Windows, mac и т. Д.. В принципе, я не хочу получать C:xampphtdocsmyProject я хочу myProject . Вот что я пробовал $rootDirectoryPath= _DIR_; $rootDirectoryFoldername='';

Комментарии:

1. вы пробовали это: php.net/manual/en/function.getcwd.php ?

2. @DmytroHuz getcwd() возвращает тот же путь, что и DIR

3. Это почти наверняка дубликат. Пожалуйста, продолжайте исследование.

4. проверьте, работает ли это в Windows или нет basename(getcwd())

5. AFAIK, нет никакой встроенной функции для получения directory of the root path , потому что у вас может быть действительно разная архитектура в зависимости от того, как вы создали свое приложение. вы должны определить это самостоятельно. Но если это всегда так, как вы его определяете, вы, вероятно, можете сделать это __DIR__ с помощью разнесения и получить последний элемент со DIRECTORY_SEPARATOR значением разделителя as, чтобы он работал во всей файловой системе.

Ответ №1:

попробуйте это,

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

$_SERVER['PHP_SELF'] возвращает путь к текущему файлу относительно вашей корневой / общедоступной
папки вашего сервера. Затем вы можете разделить строку на /, которая возвращает массив строк.
Первым элементом этого массива является имя папки вашего проекта.

При использовании в разных операционных системах вы можете проверить наличие / или и определить разделитель, который будет использоваться для разнесения.

 $delimiter = strpos($_SERVER['PHP_SELF'], '\') ? '\' : '/';
$projectFolderName = explode($delimiter, $_SERVER['PHP_SELF'])[1];
  

Это один из способов сделать это.

Комментарии:

1. будет ли это работать для C:xampphtdocsmyProject case?

2. в вашем случае разделителем каталогов является », поэтому попробуйте функцию разнесения с помощью ». Вам придется использовать ‘\’, поскольку обратная косая черта используется для экранирования кавычек.

3. итак, код вашего ответа не работает в Windows, но запрашивающему требуется решение для обоих случаев или для любой среды

4. Я думал, что он хотел получить имя папки проекта. В любом случае, чтобы заставить его работать в разных системах, есть несколько способов, которыми вы можете попробовать это, либо проверить наличие или / и разнести строку в зависимости от этого, либо, если вы используете какой-то файл переменных среды, добавьте туда переменную directory_separator .

Ответ №2:

вы также можете использовать getcwd() с DIRECTORY_SEPARATOR

 $folderName = substr(strrchr(getcwd(),DIRECTORY_SEPARATOR),1);