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

Langage PHP Discussion :

filtrage sur mot clef


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Points : 35
    Points
    35
    Par défaut filtrage sur mot clef
    bonjour

    Apres recherche j'ai trouvé ceci sur le forum:
    http://www.developpez.net/forums/sho...herche+tableau
    qui coincide assez bien avec ce que je recherche.

    Je dois afficher à partir d'un fichier de log que les lignes contenant certaines expressions, j'ai donc adapté le code fourni par Christophe dans le post ci-dessus:
    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
    26
    27
    28
    29
    30
    31
     
    <?
    //On met le contenu du fichier texte dans un tableau
    //Chaque ligne du fichier correspond à une case du tableau
    $array_fichier_source = file('user.log');
     
    //On compte le nombre de lignes
    $nb_lignes_array = count($array_fichier_source);
     
    //Le tableau dans lequel on va stocker les lignes qui nous interessent
    $array_phrases_retenues = array();
     
    $j = 0;
     
    for ( $i = 0 ; $i < $nb_lignes_array ; $i++ )
    {
       /* Pour chaque ligne on regarde si le caractère '#' est
          présent dans la ligne
          S'il n'est pas présent on peut mettre la ligne dans 
          le tableau de phrases retenues */
       //Voir explications à la suite du code pour le '==='
       if ( strpos( $array_fichier_source[$i] , 'warning' ) === true )
       {
          $array_phrases_retenues[$j] = $array_fichier_source[$i];
    	echo $array_phrases_retenues[$j] . "<br>";
          $j++;
       }
    }
     
     
    ?>
    Normalement, toutes les lignes contenant le mot clef warning devrait apparaitre, mais ce n'est pas le cas, je n'ai qu'une page blanche.
    si je mets à false, là j'ai l'integralité du fichier (même les lignes contenant un warning).
    Est il egalement possible de faire une recherche multicritere (c'est à dire sur 2 mots clefs, warning et critical, pour que toutes les lignes contenant soit l'un soit l'autre soient affichées) ?
    Merci pour votre aide

  2. #2
    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
    strpos renvoie un entier et pas un booléen du coup ton test serait plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ( strpos( $array_fichier_source[$i] , 'warning' ) != 0)
       {
    et pour les deux mots clés, il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if 
    (
    strpos( $array_fichier_source[$i] , 'warning' ) != 0  ||
    strpos( $array_fichier_source[$i] , 'critical' ) !=0
    )
       {
    EDIT: j'ajoute une chose: avant PHP 5, strpos() ne pouvait rechercher qu'un caractère dans une chaine, et pas une sous chaine, j'aurai plutot tendance pour éviter la confusion a utiliser la fonction strstr() qui retournera false si la chaine n'est pas trouvée

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Points : 35
    Points
    35
    Par défaut
    merci, comme énoncé dans votre remarque, j'ai upgradé php en php5, et ça marche !

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

Discussions similaires

  1. filtrage texte mot clef
    Par tiboo dans le forum Modules
    Réponses: 10
    Dernier message: 11/08/2010, 13h10
  2. question sur le mot clef const
    Par elmcherqui dans le forum C++
    Réponses: 3
    Dernier message: 08/07/2008, 09h42
  3. statistiques sur les mots clef
    Par Acropole dans le forum Statistiques
    Réponses: 7
    Dernier message: 22/12/2007, 21h33

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