recuperer le nom d'un fichier

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 : recuperer le nom d'un fichier

Re: recuperer le nom d'un fichier

par fabrice88250 » 19 août 2010, 12:12

Bien le bonjour et un grand merci pour votre aide qui ma permis de faire exactement se que je voulai.
MERCI à vous tous !

Re: recuperer le nom d'un fichier

par AB » 19 août 2010, 03:30

Bah un truc comme ça, et en employant la fonction glob ça va plus vite et te permet de sélectionner facilement les fichiers ayant l'extension que tu veux.
// si tes fichiers sont dans ../mesmp3/ et que tu veux les fichiers d'extension .doc (et pas les fichiers ayant une autre extension)
$dossier = '../mesmp3/';
$extension = '.doc';

$masque = $dossier.'*'.$extension;
//Tableau des fichiers .doc   
$tab = glob("$masque");
natsort($tab);

// Construction du tableau des résultats
$tab_nom_desc = array();
$i=0;
foreach ($tab as $fichier)
{
	$fich = basename($fichier,$extension);// suppression du nom de dossier et de l'extension
	$fich = str_replace('-',' ',$fich);// remplacement des - par un espace
	$fich = explode('_',$fich);// Cf fonction explode

	$nom = $fich[0];
	$desc = isset($fich[1])? $fich[1] : '';
	
	$tab_nom_desc[$i]['nom'] = $nom;
	$tab_nom_desc[$i]['desc'] = $desc;
	$tab_nom_desc[$i]['lien'] = $fichier;
	
	$i++;
}

//lecture des résultats
foreach ($tab_nom_desc as $value) echo '-nom = '.$value['nom'].' -description = '.$value['desc']. ' -lien = '.$value['lien'].'<br />';
Je crois pas qu'on puisse faire beaucoup plus simple :wink:

Re: recuperer le nom d'un fichier

par fabrice88250 » 18 août 2010, 23:14

bon ben je vai me couché car je mysére là et je comprend pas grand chose.
je voulais juste pour un fichier par exemple : mon-jolie-titre_ les-nuages-dans-les-ciel.doc
avoir au final :
$titre = mon jolie titre.
$desc = les nuages dans le ciel.

comme ça je pouvai enregistrer au besoin dans une base sql le titre et la description dans des champs separés.

Re: recuperer le nom d'un fichier

par stealth35 » 18 août 2010, 22:39

Je pencherai plutôt pour l'utilisation des array qui la perturbé. ^^
Car s'il savait comment manipuler des array il n'aurait pas fait l'erreur d'affichage.
c'est que je dis :wink:

Re: recuperer le nom d'un fichier

par xTG » 18 août 2010, 22:38

Je pencherai plutôt pour l'utilisation des array qui la perturbé. ^^
Car s'il savait comment manipuler des array il n'aurait pas fait l'erreur d'affichage.

Edit : mouarf, désolé alors. C'était l'heure d'aller se coucher de toute façon. :o

Re: recuperer le nom d'un fichier

par stealth35 » 18 août 2010, 22:36

Je l'ai fait afin de simplifier l'écriture et la compréhension stealth35.
Si tu avais regardé la ligne suivante je réécris dans le même array à un indice différent.
ca la perturbé du coup :wink:

Re: recuperer le nom d'un fichier

par xTG » 18 août 2010, 22:30

Je l'ai fait afin de simplifier l'écriture et la compréhension stealth35.
Si tu avais regardé la ligne suivante je réécris dans le même array à un indice différent.

@fabrice Pour afficher un array il faut utiliser la fonction print_r() et non echo qui elle n'affiche que les variables sur une dimension (classons les String dans les une dimension voulez-vous pour simplifier le problème :D ).

Re: recuperer le nom d'un fichier

par stealth35 » 18 août 2010, 22:09

pour récupèrer ne nom de fichier ou l'extension c'est pathinfo
ensuite si t'as un truc particulier utilise les pcre avec preg_match,
explode te rend un array

pourquoi faire ?
$tab3[0] = explode

c'est

$tab3 = explode

Re: recuperer le nom d'un fichier

par fabrice88250 » 18 août 2010, 22:04

j'ai essayé ta solution xTG mais j'ai pas de résultat ou plutot j'ai array qui s'affiche au lieu de la decomposition.

j'ai mis dans mon code :
$tab = explode('.',$fichiers); // array( 0 => "nom-prenom_ville-cp", 1 => "doc")
$tab2 = explode('_',$tab[0]); // array( 0=> "nom-prenom", 1=> "ville-cp")
$tab3[0] = explode('-',$tab2[0]); // array(0 => array(0 => "nom", 1 => "prenom"))
$tab3[1] = explode('-',$tab2[1]); // array(0 => array(0 => "nom", 1 => "prenom"), 1 => array(0=> "ville", 1=> "cp"))
echo '$tab'.$tab. '<br/>';
echo '$tab2'.$tab2. '<br/>';
echo '$tab3[0]'.$tab3[0]. '<br/>';
echo '$tab3[1]'.$tab3[1]. '<br/>';

Re: recuperer le nom d'un fichier

par stealth35 » 18 août 2010, 21:48

par contre certains de mes fichiers on des caractères accentués et du coup avec le code que je vien de mettre en place au lieu des carteres j'ai des carrés 'ma page est en utf8
FAUT PAS de caractères accentués dans le nom des fichiers. Cela risque de te poser de gros soucis. Il faut corriger ça à l'enregistrement du fichier et le renommer dans ce cas.
un jour peu être... (enfin c'est déjà le cas, mais c'est comme la compatibilité des navigateurs... y'a toujours d'irréductibles gaulois)

Re: recuperer le nom d'un fichier

par AB » 18 août 2010, 18:58

par contre certains de mes fichiers on des caractères accentués et du coup avec le code que je vien de mettre en place au lieu des carteres j'ai des carrés 'ma page est en utf8
FAUT PAS de caractères accentués dans le nom des fichiers. Cela risque de te poser de gros soucis. Il faut corriger ça à l'enregistrement du fichier et le renommer dans ce cas.

Re: recuperer le nom d'un fichier

par xTG » 18 août 2010, 18:49

$var = "nom-prenom_ville-cp.doc";
$tab = explode('.',$var); // array( 0 => "nom-prenom_ville-cp", 1 => "doc")
$tab2 = explode('_',$tab[0]); // array( 0=> "nom-prenom", 1=> "ville-cp")
$tab3[0] = explode('-',$tab2[0]); // array(0 => array(0 => "nom", 1 => "prenom"))
$tab3[1] = explode('-',$tab2[1]); // array(0 => array(0 => "nom", 1 => "prenom"), 1 => array(0=> "ville", 1=> "cp"))

Re: recuperer le nom d'un fichier

par fabrice88250 » 18 août 2010, 17:08

ok j'ai refais mon code et je l'ai adapté pour que les infos soit stocké via un tableau.
<?php 
// Configuration
$dossier = '../mesmp3/'; 
$ouverture = opendir($dossier); 

// Stockage des variables
$contenu = array();
while ($fichiers = readdir($ouverture))
{ 
   if ($fichiers != "." && $fichiers != "..")
   {
       $contenu[] = $fichiers;
   } 
} 
closedir($ouverture); 
//on effectu le tri par ordre alphabétique
natcasesort($contenu);

// Affichage + traitement
foreach ($contenu as $liste_fichiers) {

    // On récupère les icons à afficher
    
    $fichier = explode('.', $liste_fichiers);
	$sizeo = filesize ($dossier.$liste_fichiers);
	$size1 = ($sizeo / 1000000);
	$size = round($size1, 1); 
?>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#353535" width="100%" id="AutoNumber1">
  <tr>
    <td width="100%">
	<?php 	
	$fichier = $liste_fichiers;
	$fichier = str_replace("-"," ",$fichier);
	$fichier = str_replace(".mp3","",$fichier);
	$fichier = str_replace("_"," : ",$fichier);
	//strtoupper passe tout en majuscule
	$fichier = htmlentities(strtoupper($fichier)); 
	echo $fichier;

	?>
    </td>
    <td width="25%"><?php echo $size; ?> Mo</td>
    <td width="6%">
            <object type="application/x-shockwave-flash" data="dewplayer.swf?mp3=<?php $dossier.$liste_fichiers;?>" width="200" height="20" id="dewplayer">
            <param name="wmode" value="transparent" />
            <param name="movie" value="dewplayer.swf?mp3=<?php echo $dossier.$liste_fichiers;?>" />
        	</object> 
    </td>
    <td width="6%"><a href="'<?php echo $dossier.$liste_fichiers; ?>'"><img src="../images/telecharger.png" alt="telecharger" /></a></td>
  </tr>
</table>
<?php
}
?>
Le trie fonctionne ! Merci !

maintenant si je veus disocier en 2 varibales $fichier :
en fichier origine j'ai --> nom-prenom_ville-cp.doc
au final je veu :
$nom = nom et prenom
$adresse = ville et cp
j'ai regardé du coté de explode mais je n'arrive pas a le mettre en application

Est possible ?

Re: recuperer le nom d'un fichier

par Ryle » 18 août 2010, 14:53

Hmm... normalement elles devraient déjà être dans l'ordre alphabétique, mais selon le serveur, il est possible qu'il distingue les majuscules et les minuscules au lieu de les mélanger.

Au besoin, au lieu d'afficher le nom du fichier immédiatement, tu peux stocker celui-ci dans un tableau php, que pourras ensuite trier comme tu le souhaites (sort(), ...), et enfin afficher à l'aide d'une nouvelle boucle :)

Re: recuperer le nom d'un fichier

par fabrice88250 » 18 août 2010, 14:08

En fait avec htmlentities sa fonctionne bien.

Est il possible d'afficher les données trouvées dans le repertoire alphabétiquement ?