web-dev-qa-db-ja.com

PHPでglob()を使用してファイル名だけを返す方法

どうすればファイル名を返すことができますか? $ imageは絶対パス名を出力していますか?

<?php
$directory = Yii::getPathOfAlias('webroot').'/uploads/';
$images = glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE);
 foreach($images as $image)
   echo $image
?>

絶対的な名前ではなく、特定のディレクトリ内のファイル名だけが必要です。

24
ashish

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;
?>

これはおそらく少し高速ですが、大量のファイルがない限り、大きな違いはありません。

22
ernie

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);
?>
45
Asgaroth

一発ギャグ:

$images = array_map('basename', glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE));
18
Maxxer

basename()を使用します

echo basename($image);

次のように拡張機能を削除することもできます。

echo basename($image, '.php');
16
David Harris

作業ディレクトリを変更することの意図しない結果に不安がある場合は、変更する前に現在のディレクトリを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);
  ?>
2
Alex Standiford

Pathinfoを見てください

http://php.net/manual/en/function.pathinfo.php

かなり役立つ機能

2
Ascherer

ファイル名のみを抽出し、ファイル名幅拡張の新しい配列に変換する例。

$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));
}
0