(PHP 4, PHP 5, PHP 7, PHP 8)
dirname — Возвращает путь к родительскому каталогу
Функция получит строку, которая содержит путь к файлу или каталогу,
и вернёт путь к родительскому каталогу на столько уровней выше текущего
каталога, сколько указали в параметре levels
.
Замечание:
Функция dirname() наивно работает со входной строкой и не знает действительную файловую систему или компоненты пути наподобие «
..
».
В ОС Windows функция dirname() принимает установленную кодовую страницу.
Поэтому, чтобы функция видела правильное имя каталога, путь которого содержит
многобайтовые символы, требуется устанавливать кодовую страницу, которая соответствует
кодировке этих символов.
Функция dirname() поведёт себя непредсказуемо, если имя
пути path
содержит неправильные для текущей
кодовой страницы символы.
В других системах функция dirname() предполагает,
что путь path
закодировали в ASCII-совместимой кодировке,
иначе функция ведёт себя непредсказуемо.
path
Путь.
На платформах Windows как разделитель имён каталогов работает
и прямой /
, и обратный \
слеш.
В других окружениях — прямой слеш /
.
levels
На сколько уровней вложенности вверх требуется пройти.
Значение должно быть целым числом больше 0.
Функция возвращает путь к родительской директории. Функция возвращает
точку «.
», которая указывает на текущую директорию,
если путь path
не содержит слешей,
иначе возвращает путь path
без последнего компонента /component
.
При работе с функцией в цикле соблюдают осторожность, поскольку при достижении каталога верхнего уровня функция войдет в бесконечный цикл.
<?php
dirname('.'); // Вернёт «.».
dirname('/'); // Вернёт «\» в ОС Windows и «/» в *nix-системах.
dirname('\\'); // Вернёт «\» в ОС Windows и «.» в *nix-системах.
dirname('C:\\'); // Вернёт «C:\» в ОС Windows и «.» в *nix-системах.
?>
Пример #1 Пример использования функции dirname()
<?php
echo dirname("/etc/passwd") . PHP_EOL;
echo dirname("/etc/") . PHP_EOL;
echo dirname(".") . PHP_EOL;
echo dirname("C:\\") . PHP_EOL;
echo dirname("/usr/local/lib", 2);
?>
Вывод приведённого примера будет похож на:
/etc / (или \ в Windows) . C:\ /usr