(PHP 4, PHP 5, PHP 7, PHP 8)
dirname — 親ディレクトリのパスを返す
ファイルあるいはディレクトリへのパスを含む文字列を受け取って、 カレントディレクトリから 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