web-dev-qa-db-fra.com

Comment renvoyer juste un nom de fichier en utilisant glob () en php

Comment puis-je simplement retourner le nom du fichier. $ image imprime le nom de chemin absolu?

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

Tout ce que je veux, c'est le nom du fichier dans le répertoire spécifique et non le nom absolu.

24
ashish

Au lieu de basename, vous pouvez chdir avant de glober, donc les résultats ne contiennent pas le chemin, par exemple:

<?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;
?>

C'est probablement un peu plus rapide, mais cela ne fera aucune différence significative à moins d'avoir des tonnes de fichiers

22
ernie

Utilisez les php nom de base

Renvoie le composant de nom de fin du chemin

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

Bon mot:

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

Utilisez basename()

echo basename($image);

Vous pouvez également supprimer l'extension comme ceci:

echo basename($image, '.php');
16
David Harris

Si vous êtes inquiet des conséquences inattendues de la modification du répertoire de travail, vous pouvez stocker le répertoire actuel avec getcwd() avant de changer, puis utilisez simplement cette valeur pour revenir en arrière après avoir fait tout ce que vous devez faire dans ce dir.

  <?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

Jetez un œil à pathinfo

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

Fonction assez utile

2
Ascherer

Exemple d'extraction de noms de fichiers uniquement et de conversion dans un nouveau tableau d'extension de largeur de noms de fichiers.

$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