Как я могу просто вернуть имя файла. $ image печатает абсолютное имя пути?
<?php $directory = Yii::getPathOfAlias('webroot').'/uploads/'; $images = glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE); foreach($images as $image) echo $image ?>
Все, что я хочу, это имя файла в конкретном каталоге, а не абсолютное имя.
Вместо basename
вы можете использовать chdir перед glob, поэтому результаты не содержат пути, например:
<?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; ?>
Это, вероятно, немного быстрее, но не будет иметь существенных отличий, если у вас нет тонны файлов
Использовать базовое имя 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()
echo basename($image);
Вы также можете удалить расширение следующим образом:
echo basename($image, '.php');
Один лайнер:
$images = array_map('basename', glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE));
Пример: извлечение только имен файлов и преобразование в новый массив расширений ширины имен файлов.
$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)); }