1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHP ファイルパスからファイル名や拡張子を取得する関数

Posted at

目的

  • ファイルパスかラファイル名や拡張子を取得するpathinfo()関数の使い方をメモ的にまとめる

謝辞

情報

  • 筆者は下記サービスを用いて今回の記事内容の動作確認を行った。

方法

  1. PHPのファイルシステム関数の一種であるpathinfo()を用いる。

  2. 下記の様に記載することでファイルパスの各情報を配列で返してくれる。

    pathinfo(ファイルパス);
    
  3. 例えば/etc/nginx/conf.d/default.confというファイルパスを渡すと下記の様に「dirname」「basename」「extension」「filename」を配列で返してくれる。

    <?php
    
    $filePath = '/etc/nginx/conf.d/default.conf';
    var_dump(pathinfo($filePath));    
    //array(4) {
    //  ["dirname"]=>
    //  string(17) "/etc/nginx/conf.d"
    //  ["basename"]=>
    //  string(12) "default.conf"
    //  ["extension"]=>
    //  string(4) "conf"
    //  ["filename"]=>
    //  string(7) "default"
    //}
    
  4. また、当該の関数の第二引数に任意のフラグを渡すことで特定の値を返すこともできる。

    pathinfo(ファイルパス, フラグ);
    
  5. 例えば/etc/nginx/conf.d/default.confというファイルパスの拡張子込みのファイル名を返してほしい場合は下記の様に指定する。

    $filePath = '/etc/nginx/conf.d/default.conf';
    var_dump(pathinfo($filePath, PATHINFO_BASENAME));
    // string(12) "default.conf"と出力される。 
    
  6. フラッグを指定することでその他にもディレクトリ、拡張子、拡張子なしのファイル名だけを返す事ができる。

    返す値 フラッグ
    ディレクトリ PATHINFO_DIRNAME
    ファイル名(拡張子込) PATHINFO_BASENAME
    ファイル名 PATHINFO_FILENAME
    拡張子 PATHINFO_EXTENSION
  7. 実際に実行すると下記のようになる。

    $filePath = '/etc/nginx/conf.d/default.conf';
    var_dump(pathinfo($filePath, PATHINFO_DIRNAME));
    //string(17) "/etc/nginx/conf.d" と表示される
    
    var_dump(pathinfo($filePath, PATHINFO_BASENAME));
    //string(12) "default.conf" と表示される
    
    var_dump(pathinfo($filePath, PATHINFO_FILENAME));
    //string(7) "default" と表示される
    
    var_dump(pathinfo($filePath, PATHINFO_EXTENSION));
    //string(4) "conf" と表示される
    

注意事項

  • ファイルパスに複数の拡張子が含まれる場合PATHINFO_EXTENSION最後の拡張子を返す。

  • ファイルパスに拡張子がない場合、extensionキーは返されない

    $filePath = '/etc/nginx/conf.d/default';
    var_dump(pathinfo($filePath));
    //array(3) {
    //  ["dirname"]=>
    //  string(17) "/etc/nginx/conf.d"
    //  ["basename"]=>
    //  string(7) "default"
    //  ["filename"]=>
    //  string(7) "default"
    //}
    
    $filePath = '/etc/nginx/conf.d/default';
    var_dump(pathinfo($filePath, PATHINFO_EXTENSION));
    // string(0) "" のように空文字が返される。
    
  • ファイルパスのベースネーム部分が.で始まっている場合はそれに続く文字列は拡張子としてみなされる。

あとがき

  • パスの最後の名前部分を返すだけならbasenameでいいのかも知れない。

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?