【PHP8.x】dirname関数の使い方

作成日: 更新日:

dirname関数は、指定されたパス文字列から、その一つ上の階層にあたる親ディレクトリのパスを取得する関数です。

この関数は、ファイルやディレクトリのフルパス(例: /var/www/html/index.php/home/user/documents)を引数として渡すと、そのパスから一番末尾の要素(ファイル名や最後のディレクトリ名)を取り除いた部分を返します。例えば、/var/www/html/index.php の場合は /var/www/html を、/home/user/documents の場合は /home/user を取得できます。

PHP 7.0.0以降、末尾にスラッシュ(/)を持つパスの挙動が変更されました。現在のバージョン(PHP 8を含む)では、/path/to/directory/ のように末尾にスラッシュがあるパスを指定した場合、dirname() 関数は /path/to/directory を返します。一方で、/path/to/directory のように末尾にスラッシュがないパスを指定した場合は /path/to が返されます。この挙動の違いは、末尾のスラッシュが無視された後、残ったパス全体がそのパスの親ディレクトリとして返されるためです。

ルートディレクトリ(/)を指定した場合は / が、空文字列('')を指定した場合は . (カレントディレクトリを表す)が返されます。Windows環境でのパス(例: C:\path\to\file.txt)に対しても適切に動作し、C:\path\to を返します。

この関数は、ファイルパスやディレクトリパスを操作する際に、特定のファイルが所属するディレクトリや、あるディレクトリの一つ上の階層のパスを動的に取得したい場合に非常に役立ちます。例えば、設定ファイルのパスからそのディレクトリパスを取得して、関連する別のファイルを読み込む際などに利用できます。

基本的な使い方

構文(syntax)

<?php
$path = "/usr/local/bin/php";
$directory_name = dirname($path);
?>

引数(parameters)

string $path, int $levels = 1

  • string $path: ディレクトリパスを指定する文字列
  • int $levels = 1: 指定したパスから親ディレクトリをいくつ遡るかを指定する整数。デフォルトは1で、指定したパスの親ディレクトリを返します。

戻り値(return)

string

与えられたファイルパス文字列から、パスのディレクトリ部分を文字列として返します。

【PHP8.x】dirname関数の使い方 | いっしー@Webエンジニア