どうすればファイル名を返すことができますか? $ imageは絶対パス名を出力していますか?
<?php
$directory = Yii::getPathOfAlias('webroot').'/uploads/';
$images = glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE);
foreach($images as $image)
echo $image
?>
絶対的な名前ではなく、特定のディレクトリ内のファイル名だけが必要です。
basename
の代わりに、globする前にchdirすることができるため、結果にはパスが含まれません。例:
<?php
$directory = Yii::getPathOfAlias('webroot').'/uploads/';
chdir($directory); // probably add some error handling around this
$images = glob("*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE);
foreach($images as $image)
echo $image;
?>
これはおそらく少し高速ですが、大量のファイルがない限り、大きな違いはありません。
Phpの basename を使用します
パスの末尾の名前コンポーネントを返します
<?php
$directory = Yii::getPathOfAlias('webroot').'/uploads/';
$images = glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE);
foreach($images as $image)
echo basename($image);
?>
一発ギャグ:
$images = array_map('basename', glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE));
basename()
を使用します
echo basename($image);
次のように拡張機能を削除することもできます。
echo basename($image, '.php');
作業ディレクトリを変更することの意図しない結果に不安がある場合は、変更する前に現在のディレクトリをgetcwd()
で保存し、必要なすべてを行った後にその値を使用して元に戻すことができますそのディレクトリに。
<?php
$directory = Yii::getPathOfAlias('webroot').'/uploads/';
$working_dir = getcwd();
chdir($directory);
$files = glob("*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE);
chdir($working_dir);
?>
ファイル名のみを抽出し、ファイル名幅拡張の新しい配列に変換する例。
$dir = get_stylesheet_directory();//some dir - example of getting full path dir in wordpress
$filesPath = array_filter(glob($dir . '/images/*.*'), 'is_file');
$files = array();
foreach ($filesPath as $file)
{
array_Push($files, basename($file));
}