如何才能返回文件名。 $ image是打印绝对路径名吗?
<?php
$directory = Yii::getPathOfAlias('webroot').'/uploads/';
$images = glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE);
foreach($images as $image)
echo $image
?>
我想要的只是特定目录中的文件名而不是绝对名称。
答案 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)
答案 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));
}