dirname

親ディレクトリのパスを返す

説明

string dirname(string $path, int $levels = 1)

ファイルあるいはディレクトリへのパスを含む文字列を受け取って、 カレントディレクトリから levels レベルさかのぼった親ディレクトリのパスを返します。

注意:

dirname は、入力文字列を単純にそのまま処理します。 実際のファイルシステムを確認したり ".." のようなパスを気にしたりすることはありません。

警告

Windows では、dirname は現在設定されているコードページに依存します。 よって、マルチバイト文字が含まれたパスを正しく表示するには、 それと一致するコードページが設定されていなければいけません。 現在のコードページから見て不正な文字が path に含まれていた場合、 basename の動作は未定義です。

Windows 以外のシステムでは、 path はASCII と互換性があるエンコーディングでエンコードされていると想定されています。 そうでない場合、この関数の動作は未定義です。

パラメータ

path

パス。

Windows では、スラッシュ(/)とバックスラッシュ (\)の両方がディレクトリ区切り文字として使われます。 その他の環境ではスラッシュ(/)になります。

levels

親ディレクトリをどこまでさかのぼるか。

正の整数でなければいけません。

戻り値

親ディレクトリのパスを返します。 path にスラッシュが無い場合は、 カレントディレクトリを示すドット ('.') を返します。それ以外の場合は、スラッシュ以降の /component 部分を取り除いた path を返します。

警告

この関数をトップレベルディレクトリまで走査するループで使う場合は、 注意が必要です。なぜなら、無限ループに陥る可能性があるからです。

<?php
dirname('.');    // '.' を返します。
dirname('/');    // Windows では `\` を、*nix システムでは '/' を返します。
dirname('\\');   // Windows では `\` を、*nix システムでは '.' を返します。
dirname('C:\\'); // Windows では 'C:\' を、*nix システムでは '.' を返します。
?>

変更履歴

バージョン 説明
7.0.0 オプションのパラメータ levels が追加されました。

例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

参考

  • basename
  • pathinfo
  • realpath