Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/07/2007, 15h34   #1
Invité régulier
 
Inscription : juillet 2007
Messages : 61
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 61
Points : 9
Points : 9
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 :
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
pascalbout1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 15h43   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
strpos renvoie un entier et pas un booléen du coup ton test serait plutot
Code :
1
2
if ( strpos( $array_fichier_source[$i] , 'warning' ) != 0)
   {
et pour les deux mots clés, il suffit de faire
Code :
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
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 16h45   #3
Invité régulier
 
Inscription : juillet 2007
Messages : 61
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 61
Points : 9
Points : 9
merci, comme énoncé dans votre remarque, j'ai upgradé php en php5, et ça marche !
pascalbout1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h29.


 
 
 
 
Partenaires

Hébergement Web