如何在php中使用glob()返回文件名

时间:2013-01-16 20:10:20

标签: php yii

如何才能返回文件名。 $ image是打印绝对路径名吗?

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

我想要的只是特定目录中的文件名而不是绝对名称。

7 个答案:

答案 0 :(得分:43)

使用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);
?>

答案 1 :(得分:22)

而不是basename,你可以在你之前使用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;
?>

这可能会快一点,但除非你有大量文件,否则不会有任何显着差异

答案 2 :(得分:17)

一衬垫:

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

答案 3 :(得分:16)

使用basename()

echo basename($image);

你也可以删除这样的扩展名:

echo basename($image, '.php');

答案 4 :(得分:2)

看一下pathinfo

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

非常有用的功能

答案 5 :(得分:2)

如果您对更改工作目录的意外后果感到紧张,可以在更改之前将当前目录存储为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);
  ?>

答案 6 :(得分:0)

示例仅提取文件名并转换为新的文件名数组width extension。

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