LoginSignup
5
3

More than 5 years have passed since last update.

PHP:特定dirからファイル名のみ取り出すやり方色々

Posted at

概要

特定dirからファイル名のみ取り出すやり方色々あったのでまとめとく

opendir()&readdir()

ここに書いてあった内容
https://syncer.jp/php-how-to-get-directory-file-list

php

$dir = "/img/";
$fileList = array();

// ディレクトリの存在を確認し、ハンドルを取得
    if( is_dir( $dir ) && $handle = opendir( $dir ) ) {

        // ループ処理
        while( ($file = readdir($handle)) !== false ) {
            // ファイルのみ取得
            if( filetype( $path = $dir . $file ) == "file" ) {
                /********************

                  各ファイルへの処理

                  $file ファイル名
                  $path ファイルのパス

                ********************/
            array_push($fileList,$file);

            }
        }
    }
var_dump($fileList);
array (size=4)
  0 => string 'hoge.jpg' (length=8)
  1 => string 'foo.jpg' (length=7)
  2 => string 'bar.jpg' (length=7)
  3 => string 'hage.jpg' (length=8)

特徴

  • 少し回りくどい??
  • シンプルにファイルのみ返ってきてよさそう

scandir()

php

$dir = "/img/";
$fileList = scandir($dir);

var_dump($fileList);
array (size=6)
  0 => string '.' (length=1)
  1 => string '..' (length=2)
  2 => string 'hoge.jpg' (length=8)
  3 => string 'foo.jpg' (length=7)
  4 => string 'bar.jpg' (length=7)
  5 => string 'hage.jpg' (length=8)

特徴

  • あれ、dir名入ってる
  • まあシンプル

glob()

php
$dir = "/img/";
$fileList = glob($dir.'*.{jpeg,gif,png}', GLOB_BRACE);
var_dump($fileList);
array (size=4)
  0 => string '/home/ubuntu/workspace/img/hoge.jpg' (length=35)
  1 => string '/home/ubuntu/workspace/img/foo.jpg' (length=34)
  2 => string '/home/ubuntu/workspace/img/bar.jpg' (length=34)
  3 => string '/home/ubuntu/workspace/img/hage.jpg' (length=35)

特徴

  • フルパス
  • シンプルで指定も楽

最後に

他に良いやり方もあったりするんかなーー。まあこんなもんか。

5
3
1

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
5
3