SQLの窓

2015年06月23日


PHP で pathinfo と mime 情報やその他を合体した、get_finfo 関数を使って、opendir からファイル一覧を出力

ファイルの一覧から、ファイル情報を配列でまとめたものを一括で取得できるようにしました。

※ Windows では、php.ini の extension=php_fileinfo.dll を有効にする必要があります
<?php
header( "Content-Type: text/html; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

print "<pre>";

$target = ".";
print realpath($target) . "\n";

$dir_handle = @opendir($target);
if ( $dir_handle ) {
	// ディレクトリハンドルの取得成功

	while (false !== ($entry = readdir($dir_handle))) {
		// 対象外は読み飛ばし
		if ( $entry == '.' || $entry == '..' ) {
			print  "対象外=>{$entry}\n";
			continue;
		}

		print  "{$entry}\n";
		print_r( get_finfo($target.DIRECTORY_SEPARATOR.$entry) );


	}
}

print "</pre>";

function get_finfo($path) {

	$finfo = finfo_open(FILEINFO_MIME);
	$mime = finfo_file($finfo, $path);
	$mime2 = explode( "; ", $mime );
	$mime3 = explode( "=", $mime2[1] );
	$pathinfo = pathinfo(realpath($path));
	$path_parts = pathinfo($pathinfo["dirname"]);
	$pathinfo["parent"] = $path_parts["basename"];
	$pathinfo["mime"] = $mime2[0];
	$pathinfo["charset"] = $mime3[1];
	if ( $pathinfo["charset"] == "" ) {
		unset($pathinfo["charset"]);
	}
	$pathinfo["size"] = filesize($path);
	if ( $pathinfo["mime"] == "directory" ) {
		unset($pathinfo["size"]);
	}
	$pathinfo["full"] = realpath($path);

	return $pathinfo;

}

?>


▼ 以下は、Windows での実行サンプルです。
C:\user\web\basic
対象外=>.
対象外=>..
db_update
Array
(
    [dirname] => C:\user\web\basic
    [basename] => db_update
    [filename] => db_update
    [parent] => basic
    [mime] => directory
    [full] => C:\user\web\basic\db_update
)
dir_test.php
Array
(
    [dirname] => C:\user\web\basic
    [basename] => dir_test.php
    [extension] => php
    [filename] => dir_test
    [parent] => basic
    [mime] => text/x-php
    [charset] => utf-8
    [size] => 1457
    [full] => C:\user\web\basic\dir_test.php
)
log.zip
Array
(
    [dirname] => C:\user\web\basic
    [basename] => log.zip
    [extension] => zip
    [filename] => log
    [parent] => basic
    [mime] => application/zip
    [charset] => binary
    [size] => 1589
    [full] => C:\user\web\basic\log.zip
)
php.exe
Array
(
    [dirname] => C:\user\web\basic
    [basename] => php.exe
    [extension] => exe
    [filename] => php
    [parent] => basic
    [mime] => application/x-dosexec
    [charset] => binary
    [size] => 59392
    [full] => C:\user\web\basic\php.exe
)
php5.dll
Array
(
    [dirname] => C:\user\web\basic
    [basename] => php5.dll
    [extension] => dll
    [filename] => php5
    [parent] => basic
    [mime] => application/x-dosexec
    [charset] => binary
    [size] => 5949440
    [full] => C:\user\web\basic\php5.dll
)
tool_html_150517214638.htm
Array
(
    [dirname] => C:\user\web\basic
    [basename] => tool_html_150517214638.htm
    [extension] => htm
    [filename] => tool_html_150517214638
    [parent] => basic
    [mime] => text/html
    [charset] => utf-8
    [size] => 603
    [full] => C:\user\web\basic\tool_html_150517214638.htm
)
_img.jpg
Array
(
    [dirname] => C:\user\web\basic
    [basename] => _img.jpg
    [extension] => jpg
    [filename] => _img
    [parent] => basic
    [mime] => image/jpeg
    [charset] => binary
    [size] => 133801
    [full] => C:\user\web\basic\_img.jpg
)





タグ:PHP
【PHPの最新記事】
posted by lightbox at 2015-06-23 23:12 | PHP | このブログの読者になる | 更新情報をチェックする
container 終わり



フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり