ファイルパスに関する情報を返す

# pathinfo

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

pathinfo — ファイルパスに関する情報を返す

### 説明

function pathinfo(string `$path`, int `$flags` = `PATHINFO_ALL`): array|string

pathinfo() は、`path` に関する情報を返します。`flags` によって連想配列あるいは文字列のどちらかとなります。

> 注意:

> カレントのパスに関する情報を取得するには、 定義済みの変数 のセクションをご覧ください。

> 注意:

> pathinfo() は入力された文字列をそのまま扱います。 よって、実際のファイルシステムや "`..`" のようなパスコンポーネントも認識しません。

> 注意:

> Windows システムでのみ、`\` 文字はディレクトリのセパレータとして解釈されます。 それ以外のシステムでは、他の文字と同じように扱われます。

警告

pathinfo() はロケールを考慮して処理を行います。 マルチバイト文字を含むパスを正しく処理するには、正しいロケールを setlocale() 関数で設定しておかなければなりません。

### パラメータ

`path`

  調べたいパス。

`flags`

  指定する場合は、どの要素を返すのかを `PATHINFO_DIRNAME`、 `PATHINFO_BASENAME`、 `PATHINFO_EXTENSION` あるいは `PATHINFO_FILENAME` のいずれかで指定します。

  `flags` を省略した場合はすべての要素を返します。

### 戻り値

`flags` パラメータを渡さなかった場合は、次の要素を含む連想配列を返します。 `dirname`、`basename`、 `extension` (存在すれば)、そして `filename`。

> 注意:

> `path` に複数の拡張子が含まれる場合は、 `PATHINFO_EXTENSION` は最後の拡張子だけを返します。また、 `PATHINFO_FILENAME` は最後の拡張子だけを取り除きます (最初のサンプルを参照ください)。

> 注意:

> `path` に拡張子がない場合は、 `extension` 要素は返されません (以下の二番目の例を参照ください)。

> 注意:

> `path` の `basename` がドットで始まる場合は、それに続く文字は `extension` とみなされます。そして `filename` は空文字列となります (以下の三番目の例を参照ください)。

`flags` を指定すると、 要求した要素を文字列で返します。

### 例

例1 pathinfo() の例

    <?php
    $path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

    echo $path_parts['dirname'], "\n";
    echo $path_parts['basename'], "\n";
    echo $path_parts['extension'], "\n";
    echo $path_parts['filename'], "\n";
    ?>

上の例の出力は以下となります。

    /www/htdocs/inc
    lib.inc.php
    php
    lib.inc

例2 pathinfo() での、拡張子を空にしたときと拡張子がないときの違いの例

    <?php
    $path_parts = pathinfo('/path/emptyextension.');
    var_dump($path_parts['extension']);

    $path_parts = pathinfo('/path/noextension');
    var_dump($path_parts['extension']);
    ?>

上の例の出力は、 たとえば以下のようになります。

    string(0) ""

    Notice: Undefined index: extension in test.php on line 6
    NULL

例3 pathinfo() での、ドットファイルの例

    <?php
    print_r(pathinfo('/some/path/.test'));
    ?>

上の例の出力は、 たとえば以下のようになります。

    Array
    (
        [dirname] => /some/path
        [basename] => .test
        [extension] => test
        [filename] =>
    )

例4 配列の分解機能を、pathinfo() と一緒に使う例

`flags` パラメータは、ビットマスクではありません。 単一の値だけを指定できます。 パース済みの値の限られた一部を選択したい場合、 配列を分解する機能を以下のようにして使います:

    <?php
    ['basename' => $basename, 'dirname' => $dirname] = pathinfo('/www/htdocs/inc/lib.inc.php');

    var_dump($basename, $dirname);
    ?>

上の例の出力は、 たとえば以下のようになります。

    string(11) "lib.inc.php"
    string(15) "/www/htdocs/inc"

### 参考

- dirname() - 親ディレクトリのパスを返す
- basename() - パスの最後にある名前の部分を返す
- parse_url() - URL を解釈し、その構成要素を返す
- realpath() - 正規化された絶対パス名を返す

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open