Appeller un fichier sans connaître l'extension et le préfixe

Résolu/Fermé
andykx - 1 févr. 2017 à 10:52
 andykx - 1 févr. 2017 à 16:05
Bonjour,

Alors voila j'ai un soucis je cherche à appeller un fichier en connaissant qu'un mot contenu dans le nom du fichier.

Voici mon code :

$chemin = " '*' .$case2. '*' ";

Cependant il ne comprend pas les astérisques. Comment puis-je faire ?

Merci.
A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié par Pitet le 1/02/2017 à 12:06
Salut,

Une solution possible est d'utiliser la fonction glob() pour rechercher les fichiers et dossiers à partir d'un masque.
Par exemple :
$pattern = '*index*';

$files = glob($pattern);

foreach ($files as $file) {
    if (is_file($file)) {
        echo $file;
    }
}


https://www.php.net/manual/fr/function.glob.php

Bonne journée,
0
Meci pour ta réponse, le problème c'est que j'utilise déja cette fonction, voici mon code entier de mon fichie php :

<?php

session_start();

$case2 = $_SESSION['name2'];

$dir = 'C:\\wamp64\\www\\doc\\';

$chemin = " '*' .$case2. '*' "; 

foreach (glob($dir. '*' .$case2. '*') as $filename) {
    echo "Nom du fichier : <a href='..\\..\\doc\\$chemin' rel="nofollow noopener noreferrer" target="_blank">"  . $filename .  "</a><br>";
}

?>


Je ne voit donc acune solution à mon problème et je suis bloqué là dessus depuis 1 jour.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
1 févr. 2017 à 14:26
Ton code semble correct, si celui-ci ne retourne aucun résultat c'est qu'aucun fichier dans le dossier doc ne correspond au masque utilisé dans la fonction glob.

Quel est la valeur de la variable $case2 ? As tu des fichiers qui correspondent au masque dans le dossier doc ?
0
andykx > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
1 févr. 2017 à 14:49
Justement si, des fichiers contenant le mot de la variable sont présents.

Par exemple, je récupère le mot coupure dans ma variable $case2 et lorsque je met ma souris sur le lien il m'indique qu'il me renvoie vers :

http://localhost/doc/*coupure*__Il prend donc bien en compte la valeur de ma variable mais il ne comprend pas les astérisques, je ne sais pas pourquoi..

De plus admettons que j'enlève le $chemin il m'ouvre bien le dossier /doc et je vois bien tous les fichiers présens à l'intérieur.
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié par Pitet le 1/02/2017 à 15:03
La chaine *coupure* est le masque, ton lien doit pointer sur le fichier et non sur le masque :
foreach (glob($dir. '*' .$case2. '*') as $filename) {
     echo "Nom du fichier : <a href='/doc/" . basename($filename) . "' rel="nofollow noopener noreferrer" target="_blank">"  . $filename .  "</a><br>";
}
0
andykx > Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022
1 févr. 2017 à 15:31
Effectivement tu a raison je n'avais pas penser à ça je pense qu'on est sur la bonne voie.

Cependant j'ai pas mal d'erreurs à cause des << " >> et des << ' >> .

Mon interpréteur me renvoie ça :

Parse error: syntax error, unexpected 'nofollow' (T_STRING), expecting ',' or ';' in C:\wamp64\www\accueil_accenture\doc2.php on line 12
0
Problème résolu.

Je te remercie pour ton aide.

Bonne fin de journée.
0