#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);