pathinfo

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

説明

arraystring pathinfo(string $path, int $flags = PATHINFO_ALL)

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

注意:

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

注意:

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

注意:

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

警告

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

パラメータ

path

調べたいパス。

flags

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

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

戻り値

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

注意:

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

注意:

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

注意:

pathbasename がドットで始まる場合は、それに続く文字は 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
  • realpath