IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

recherche dans un fichier texte [EasyPHP]


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut recherche dans un fichier texte
    Bonjour,
    Je voudrais pouvoir rechercher du texte dans un fichier texte.
    Au final je voudrai que ça m'affiche la ligne ou mon terme à été trouvé.
    J'ai fait cela mais ça ne me retourne rien...

    J'ai remarqué que je ne rentrais pas dans la boucle " while (!feof($pointeur))" mais je ne sais pas pourquoi.

    Pouvez vous m'aidez svp.

    Merci d'avance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    $url = C_CHEMIN."/lang/fr/textes.inc.php";
     
    $fichier = $url;
    $s = $recherche;
    $motif = "/$s/";
     
    $pointeur = fopen($fichier, "r");
    $i = 0;
     
    if ($pointeur) {
     
      while (!feof($pointeur)) {
     
       echo "tata";
       $ligne = fgets($pointeur);
     
        if (preg_match($motif, $ligne, $r)) {
          echo $ligne.'';
          $i++;
          }
        }
      fclose($pointeur);
      echo "Motif '$s' trouvé $i fois.";
      }

  2. #2
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Salut,
    Concernant l'affichage de la ligne, regarde la fonction file(), cela pourra t'être utile :
    http://www.php.net/file


    Sinon pour ton problème, j'imagine que l'echo "tata" c'est pour tester si tu es bien dans ta boucle ?
    Est-ce que tu peut le mettre apres ton premier if ? Car ton while m'a l'air correct. S'il ne passe pas, c'est peut-être que tu ouvres un fichier vide ou bien que le chemin est faux ?
    Sinon pour ton premier if, s'il sert à tester si le fichier existe, tu as aussi la fonction file_exists() qui serait plus approprié :
    http://www.php.net/file_exists

    Voila voila,
    ++
    ShinJava

  3. #3
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut
    merci pour ta réponse.
    effectivement le echo "tata" c'est pour tester...
    Je rentre bien dans mon if mais pas dans le while, je ne sais pas pourquoi...

  4. #4
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Dans ce cas là, a quoi correspond C_CHEMIN ?
    Peut etre que le chemin n'est pas bon ?

    Si ton repertoire /lang/ ce trouve à la racine de ton site , essaye cette méthode pour ouvrir le fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $url = $_SERVER['DOCUMENT_ROOT']."/lang/fr/textes.inc.php";
    Ca devrait passer...

  5. #5
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut
    je viens de tester pour le chemin du fichier et c'est bon.
    J'ai par contre créer un fichier .txt à la place et la il rentre dans la boucle...
    Pourquoi ne veut il pas rentrer dans mon fichier.php, il l'interprete differement ?

    De plus, en testant avec un fichier.txt ,j'ai une erreur à chaque itération de mon while pour la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (preg_match($motif, $ligne, $r))
    voici l'erreur:
    Warning: Unknown modifier 't' in...


  6. #6
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Normalement ca ne doit pas poser de problème pour lire un fichier .php, tu as fait le test de file_exists() ?
    Je viens d'essayer de lire un fichier.php chez moi, et je n'ai eu aucun problème.

    Sinon pour le preg_match, j'ai un peu de mal à le saisir, à quoi correspond $r ?

  7. #7
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut
    J'ai trouvé d'où venait la derniere erreur:

    if (preg_match('# toto #', $ligne, $r))

    il interprete mal le fait que ce soit une variable à la place de "toto".

    Par contre toujours pas de solution pour mon probleme quand le fichier est en .php

  8. #8
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut
    Je viens de tester avec le file_exist et en effet ça me dit que mon fichier n'existe pas, je ne comprend pas pourquoi ?

  9. #9
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    La variable doit normalement passer.

    Je me suis basé sur ton exemple pour coder un mini truc et cela fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    $i=0;
    $recherche="webmaster";
    $s = $recherche;
    $motif = "/$s/";
    $pointeur = fopen($_SERVER['DOCUMENT_ROOT']."/login/name.php", "r");
    while(!feof($pointeur))
    {
    	$ligne = fgets($pointeur);
    	if (preg_match($motif, $ligne)) 
    	{
          echo $ligne.'';
          $i++;
        }
     
    }
    fclose($pointeur);
    Cela m'affiche bien "webmaster" sur ma page...
    A part le fait que le chemin ne soit pas bon, je ne vois pas qu'elle est le problème...

  10. #10
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Citation Envoyé par cflo91
    Je viens de tester avec le file_exist et en effet ça me dit que mon fichier n'existe pas, je ne comprend pas pourquoi ?
    Tu doit surement chercher dans le mauvais repertoire.
    A la fin de ton code fait :

    Tu verra surement d'ou vient le problème.

  11. #11
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut
    j'ai fait un echo $url et ça m'affiche bien le bon chemin, je l'ai copié dans ma barre d'adresse et j'arrive bien au fichier...

    Je comprend plus rien..

  12. #12
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    J'étais parti mangé

    Bon j'ai une question : que retourne ton $url ? Une url de style http:// ou bien le chemin vers ton fichier (genre c:/ pour windows).
    S'il s'agit effectivement d'un http:// , ca doit normalement poser un problème avec un fichier php (t'imagines si on pouvait ouvrir n'importe quel fichier .php de n'importe quel site...). En gros ton fopen() prendra en compte uniquement l'affichage sur ton navigateur (il me semble). C'est pour ça que cela fonctionnerait sans problème avec un fichier texte (comme dans ton cas plus haut).
    Dans le cas où ton $url retourne effectivement un lien internet, je préconise la solution que j'ai proposé plus haut avec le $_SERVER['DOCUMENT_ROOT'].

    Voila voila
    ++
    ShinJava

  13. #13
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut
    Oui il s'agit d'un htpp...
    http://127.0.0.1/serveurweb/dvpt_fr/...textes.inc.php

    mais j'ai testé avec $_SERVER['DOCUMENT_ROOT'] et ça me donne ça:
    c:/program files/easyphp1-8/www/lang/fr/textes.inc.php

    or mon fichier se trouve :
    D:\serveurweb\sites\dvpt_fr\lang\fr


    Comment pourrais je faire?

  14. #14
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Argh j'ai jamais utilisé easyphp. Je ne connais pas trop comment se passe la configuration à l'interieur (faut que tu te renseignes là-dessus)

    J'imagine que le site est en test sur ton ordi et que tu l'uploadera sur un serveur ? (si c'est le cas, le $_SERVER['DOCUMENT_ROOT'] fonctionnera).
    Pour faire fonctionner ton code sur ton ordi, met tout simplement le chemin complet vers ton fichier dans le fopen.
    Ou bien, créer une variable avec comme valeur le chemin vers le repertoire de la racine de ton site. Comme ca quand tu uploadera le site sur ton serveur, t'aura juste à changer la valeur de cette variable... (un peu comme ton C_CHEMIN)... au fait ton C_CHEMIN a quoi comme valeur ?

    ++
    ShinJava

  15. #15
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut
    C'est bon j'ai mis l'adresse.

    Par contre, je voudrais qua ça me retourne le numero de la ligne où le texte a été trouvé c'est possible ?

  16. #16
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Il suffit que tu te rajoutes un petit compteur dans ta boucle qui va compter le nombre de lignes, comme ca quand tu trouves ton mot tu connais le numéro de la ligne qui va avec

  17. #17
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    enfin !

    Alors pour la ligne, je sais pas si tu as jeter un coup d'oeil sur la fonction file(), apparement tu peux faire quelque chose avec.
    Sinon tu peux tout simplement incrémenter une valeur a chaque passage de ta boucle while.
    Genre tu déclares $j=1 (on commence a la premiere ligne) et la fin de ta boucle while tu met un $j++... et quand tu es dans ton if preg_match, tu affiche $j.

    J'ai une petite question sur ton preg_match , à quoi correspond le $r (le 3eme parametre sert à quoi ?)

    ++
    ShinJava

  18. #18
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par ShinJava
    enfin !

    Alors pour la ligne, je sais pas si tu as jeter un coup d'oeil sur la fonction file(), apparement tu peux faire quelque chose avec.
    Sinon tu peux tout simplement incrémenter une valeur a chaque passage de ta boucle while.
    Genre tu déclares $j=1 (on commence a la premiere ligne) et la fin de ta boucle while tu met un $j++... et quand tu es dans ton if preg_match, tu affiche $j.

    J'ai une petite question sur ton preg_match , à quoi correspond le $r (le 3eme parametre sert à quoi ?)

    ++
    ShinJava
    Je ne sais pas à quoi elle sert, je l'ai supprimé...

  19. #19
    Membre régulier Avatar de cflo91
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 113
    Points : 77
    Points
    77
    Par défaut
    Merci pour votre aide, ça fonctionne nikel !

  20. #20
    Membre averti Avatar de ShinJava
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    413
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 413
    Points : 357
    Points
    357
    Par défaut
    Cool , cette petite discussion m'a permis de revoir quelques petites bases. Merci
    Bonne journée et bon courage la suite

    ++
    ShinJava

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche dans un fichier texte
    Par Yazoo70 dans le forum C++
    Réponses: 7
    Dernier message: 12/06/2007, 09h31
  2. recherche dans un fichier texte en perl(débutant)
    Par Shyboy dans le forum Langage
    Réponses: 3
    Dernier message: 05/07/2006, 00h53
  3. [VB]Recherche dans un fichier texte
    Par mirascheat dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 26/09/2005, 13h11
  4. Recherche dans un fichier texte volumineux.
    Par Actarus69 dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 27/07/2005, 18h39
  5. [LG]rechercher dans un fichier texte
    Par BadFox dans le forum Langage
    Réponses: 11
    Dernier message: 01/12/2003, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo