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

Résolu/Fermé
Signaler
-
 andykx -
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.

2 réponses

Messages postés
2650
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
13 janvier 2022
485
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
Messages postés
2650
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
13 janvier 2022
485
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
>
Messages postés
2650
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
13 janvier 2022

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
Messages postés
2650
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
13 janvier 2022
485
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
>
Messages postés
2650
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
13 janvier 2022

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