[RESOLU] Suppression de caractères en fin de nom de fichiers

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Suppression de caractères en fin de nom de fichiers

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

par fred_chx » 02 juin 2016, 15:29

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

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

par @rthur » 02 juin 2016, 15:26

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

par fred_chx » 02 juin 2016, 15:24

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

par ynx » 02 juin 2016, 15:24

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

par carte-sd » 02 juin 2016, 14:42

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

par Naroth » 02 juin 2016, 12:19

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

Suppression de caractères en fin de nom de fichiers

par fred_chx » 02 juin 2016, 12:13

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