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

ash*_*ish 27 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
?>
Run Code Online (Sandbox Code Playgroud)

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

Asg*_*oth 48

使用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);
?>
Run Code Online (Sandbox Code Playgroud)


ern*_*nie 23

而不是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;
?>
Run Code Online (Sandbox Code Playgroud)

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


Max*_*xer 19

一内胆:

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


Dav*_*ris 16

使用 basename()

echo basename($image);
Run Code Online (Sandbox Code Playgroud)

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

echo basename($image, '.php');
Run Code Online (Sandbox Code Playgroud)