我怎样才能返回文件名。$image 正在打印绝对路径名?
<?php
$directory = Yii::getPathOfAlias('webroot').'/uploads/';
$images = glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE);
foreach($images as $image)
echo $image
?>
我想要的只是特定目录中的文件名而不是绝对名称。
使用 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);
?>
代替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;
?>
这可能会快一点,但除非您有大量文件,否则不会有任何显着差异
单线:
$images = array_map('basename', glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE));
利用basename()
echo basename($image);
您还可以像这样删除扩展名:
echo basename($image, '.php');
如果您对更改工作目录的意外后果感到紧张,您可以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);
?>
示例仅提取文件名并转换为新的文件名宽度扩展数组。
$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));
}