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.
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
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);
?>
Bon mot:
$images = array_map('basename', glob($directory . "*.{jpg,JPG,jpeg,JPEG,png,PNG}", GLOB_BRACE));
Utilisez basename()
echo basename($image);
Vous pouvez également supprimer l'extension comme ceci:
echo basename($image, '.php');
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);
?>
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));
}