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

Résolu
andykx -  
 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

  1. Pitet Messages postés 2845 Statut Membre 530
     
    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
  2. andykx
     
    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
    1. Pitet Messages postés 2845 Statut Membre 530
       
      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
      1. andykx > Pitet Messages postés 2845 Statut Membre
         
        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
    2. Pitet Messages postés 2845 Statut Membre 530
       
      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
      1. andykx > Pitet Messages postés 2845 Statut Membre
         
        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
    3. andykx
       
      Problème résolu.

      Je te remercie pour ton aide.

      Bonne fin de journée.
      0