Как вернуть только имя файла с помощью glob() в php - программирование
Подтвердить что ты не робот

Как вернуть только имя файла с помощью glob() в php

Как я могу просто вернуть имя файла. $image - это абсолютное имя пути?

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

Все, что я хочу, это имя файла в конкретном каталоге, а не абсолютное имя.

4b9b3361

Ответ 1

Вместо 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;
?>

Это, вероятно, немного быстрее, но не будет иметь существенных отличий, если у вас нет большого количества файлов

Ответ 2

Использовать 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);
?>

Ответ 3

Используйте basename()

echo basename($image);

Вы также можете удалить расширение следующим образом:

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

Ответ 4

Однострочник:

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

Ответ 6

Пример извлечения только имен файлов и преобразования в новый массив расширений ширины имен файлов.

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