Page 1 sur 1

Suppression de caractères en fin de nom de fichiers

Posté : 02 juin 2016, 12:13
par fred_chx
Bonjour, j'utilise le code ci-dessous pour lister les fichiers contenus dans un dossier et les afficher sous forme de liens dans une pages web. Je souhaiterais ne pas afficher les extensions des fichiers dans la page pour obtenir meilleur rendu visuel.

Code : Tout sélectionner

<?php $dir = 'docs/cpt-rendus/'; $href1 = '<img src="img/pdf.png" border="0" height="22" width="22" alt="Pdf"><a class="all" href=docs/cpt-rendus/"'; $href3 = '">&nbsp;~&nbsp;'; $href4 = '</a><br><br>'; $files = scandir($dir, 0); for($i = 2; $i < count($files); $i++) print $href1 . $files[$i] . $href3 . $files[$i] . $href4 ?>
J'affiche donc une liste du contenu du dossier docs/cpt-rendus/, et je souhaite tronquer les 4 derniers caractères du nom de chaque fichier (.pdf).

Merci à tous,

Frederic

Re: Suppression de caractères en fin de nom de fichiers

Posté : 02 juin 2016, 12:19
par Naroth
Bonjour fred_chx,

Pour ton problème je te conseille de te pencher sur la fonction php suvante :

pathinfo : Retourne une array avec plein d'info sur un fichier (notamment son nom sans l'extension)
http://php.net/manual/en/function.pathinfo.php


Sache que tu peux aussi enlevé l'extension manuellement :

strpos : Retourne la première occurence d'un caractère dans une chaîne
http://php.net/manual/en/function.strpos.php

strrchr : Retourne la dernière occurence d'un caractère dans une chaîne
http://php.net/manual/en/function.strrchr.php

substr : Retourne une partie d'une chaîne de caractère
http://php.net/manual/en/function.substr.php

Re: Suppression de caractères en fin de nom de fichiers

Posté : 02 juin 2016, 14:42
par carte-sd
Personnellement je ferais un truc tout simple :

Code : Tout sélectionner

if (preg_match('#^([a-z0-9_.-]+)\.[a-z]{3}$#i', 'fdsiif.txt', $match)): $fichier = $match[1]; var_dump($fichier); endif;

Re: Suppression de caractères en fin de nom de fichiers

Posté : 02 juin 2016, 15:24
par ynx
Salut,

Une autre solution proposée sur la doc en combinant pathinfo et basename : http://php.net/manual/fr/function.basename.php#94026

@carte-sd : il manque une condition pour les extensions avec 4 lettres, .jpeg par exemple

Bonne journée,

Re: Suppression de caractères en fin de nom de fichiers

Posté : 02 juin 2016, 15:24
par fred_chx
Merci à tous les deux, j'ai opté pour une solution avec pathinfo, je n'ai pas un niveau suffisant pour comprendre les implication de la proposition de cart-sd :

Code : Tout sélectionner

<?php $href1 = '<img src="img/pdf.png" border="0" height="22" width="22" alt="Pdf"><a class="all" href="docs/cpt-rendus/divers/'; $href2 = '">&nbsp;~&nbsp;'; $href3 = '</a><br><br>'; $files = glob('docs/cpt-rendus/divers/*.*'); foreach($files as $files) { $files = pathinfo($files); print $href1 . $files['basename'] . $href2 . $files['filename'] . $href3; } ?>
Ça me génère une liste de liens depuis le contenu du dossier "divers" et m'affiche uniquement le nom du fichier sans l'extension.

Merci beacoup,

=D>

Frederic

Re: Suppression de caractères en fin de nom de fichiers

Posté : 02 juin 2016, 15:26
par @rthur
Bonjour,

Pour parcourir la liste des fichiers d'un répertoire, tu peux utiliser la fonction glob() qui est très pratique.
Et pour retirer l'extension, si tu es sûr que tous tes fichiers sont des .pdf, alors c'est très simple avec la fonction basename().

Voila ce que donnerait ton code en 3 lignes :
<?php
foreach (glob("docs/cpt-rendus/*.pdf") as $fichier) {
    echo '<img src="img/pdf.png" border="0" height="22" width="22" alt="Pdf"><a class="all" href="'.$fichier.'">&nbsp;~&nbsp;'.basename($fichier, ".pdf").'</a><br><br>';
}
##edit : Ah bah j'arrive après la bataille :D

Re: Suppression de caractères en fin de nom de fichiers

Posté : 02 juin 2016, 15:29
par fred_chx
Merci beaucoup, votre solution est bien plus élégante que le mienne, je m'en inspire sur le champ pour simplifier mon code.

Cdlt,

Frederic