pathinfo

Returns information about a file path

&reftitle.description; ``array``string```pathinfo` `string` `path` `int` `flags` `PATHINFO_ALL`

`pathinfo` returns information about `path`: either an associative array or a string, depending on `flags`.

For information on retrieving the current path info, read the section on predefined reserved variables.

`pathinfo` operates naively on the input string, and is not aware of the actual filesystem, or path components such as "`..`".

On Windows systems only, the `\` character will be interpreted as a directory separator. On other systems it will be treated like any other character.

`pathinfo` is locale aware, so for it to parse a path containing multibyte characters correctly, the matching locale must be set using the `setlocale` function.

&reftitle.parameters;

`path`

- The path to be parsed.

`flags`

- If present, specifies a specific element to be returned; one of `PATHINFO_DIRNAME`, `PATHINFO_BASENAME`, `PATHINFO_EXTENSION` or `PATHINFO_FILENAME`.

  If `flags` is not specified, returns all available elements.

&reftitle.returnvalues;

If the `flags` parameter is not passed, an associative `array` containing the following elements is returned: `dirname`, `basename`, `extension` (if any), and `filename`.

If the `path` has more than one extension, `PATHINFO_EXTENSION` returns only the last one and `PATHINFO_FILENAME` only strips the last one. (see first example below).

If the `path` does not have an extension, no `extension` element will be returned (see second example below).

If the `basename` of the `path` starts with a dot, the following characters are interpreted as `extension`, and the `filename` is empty (see third example below).

If `flags` is present, returns a `string` containing the requested element.

&reftitle.examples;

### `pathinfo` Example

    <?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";
    ?>

&example.outputs;

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

### `pathinfo` example showing difference between null and no extension

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

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

&example.outputs.similar;

    string(0) ""

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

### `pathinfo` example for a dot-file

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

&example.outputs.similar;

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

### `pathinfo` example with array dereferencing

The `flags` parameter is not a bitmask. Only a single value may be provided. To select only a limited set of parsed values, use array destructuring like so:

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

    var_dump($basename, $dirname);
    ?>

&example.outputs.similar;

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

&reftitle.seealso;

- `dirname`
- `basename`
- `parse_url`
- `realpath`