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

Вы можете создать для этого функцию:

/**
* Split a string by string (Similar to the php function explode())
*
* @param VARCHAR(12) delim The boundary string (delimiter).
* @param VARCHAR(255) str The input string.
* @param INT pos The index of the string to return
* @return VARCHAR(255) The (pos)th substring
* @return VARCHAR(255) Returns the [pos]th string created by splitting the str parameter on boundaries formed by the delimiter.
* @{@example
*     SELECT SPLIT_STRING('|', 'one|two|three|four', 1);
*     This query
* }
*/
DROP FUNCTION IF EXISTS SPLIT_STRING;
CREATE FUNCTION SPLIT_STRING(delim VARCHAR(12), str VARCHAR(255), pos INT)
RETURNS VARCHAR(255) DETERMINISTIC
RETURN
    REPLACE(
        SUBSTRING(
            SUBSTRING_INDEX(str, delim, pos),
            LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1
        ),
        delim, ''
    );

Преобразование магического псевдокода для его использования: у вас есть:

SELECT e.`studentId`, SPLIT_STRING(',', c.`courseNames`, e.`courseId`)
FROM...
23
задан ashish 16 January 2013 в 20:10
поделиться

7 ответов

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

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

22
ответ дан ernie 16 January 2013 в 20:10
поделиться

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

$images = array_map('basename', glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE));
18
ответ дан Maxxer 16 January 2013 в 20:10
поделиться

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

echo basename($image);

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

echo basename($image, '.php');
16
ответ дан David Harris 16 January 2013 в 20:10
поделиться

Взгляните на pathinfo

http://php.net/manual/en/function.pathinfo.php

Довольно полезная функция

2
ответ дан Ascherer 16 January 2013 в 20:10
поделиться

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

$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));
}
0
ответ дан Stanislav Prusac 16 January 2013 в 20:10
поделиться

Использовать базовое имя в 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);
?>
43
ответ дан Asgaroth 16 January 2013 в 20:10
поделиться

Если вы нервничаете из-за непреднамеренных последствий изменения рабочего каталога, вы можете сохранить текущий каталог с помощью 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);
  ?>
2
ответ дан Alex Standiford 16 January 2013 в 20:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: