29

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

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

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

4

7 に答える 7

55

phpのベース名を使用する

パスの末尾の名前コンポーネントを返します

<?php
$directory = Yii::getPathOfAlias('webroot').'/uploads/';
$images = glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE);
 foreach($images as $image)
   echo basename($image);
?>
于 2013-01-16T20:11:51.997 に答える
28

の代わりに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;
?>

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

于 2013-01-16T20:57:09.467 に答える
23

一発ギャグ:

$images = array_map('basename', glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE));
于 2015-01-26T16:38:40.573 に答える
19

使用するbasename()

echo basename($image);

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

echo basename($image, '.php');
于 2013-01-16T20:12:05.647 に答える
3

pathinfoを見てください

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

かなり便利な機能

于 2013-01-16T20:12:10.003 に答える
1

作業ディレクトリを変更した場合の意図しない結果に不安がある場合は、変更する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);
  ?>
于 2018-06-03T11:58:44.827 に答える
0

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

$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));
}
于 2014-02-19T13:32:54.847 に答える