Bonjour,

Je suis en train d'adapter un bout de code réalisé en PERL vers du PHP.

L'idée et de parcourir un fichier (logs).
Dès que je trouve une ligne d'intérêt (preg_match) je souhaiterais récupérer alors la ligne suivante...
J'ai un problème quant au comportement de la fonction while.

C'est simple en PERL:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
// Parcours du fichier
while (<MONFICHIER>) {
  // Si regex match
  if (/.../) {
     // J'affiche la ligne d'intérêt
     print ligne1\n;
     // Je parcours le reste du fichier jusqu'à la ligne suivante (inclue)
     while (<MONFICHIER>) {
        print ligne2;
        last; //on sort du 2° while
     }
  }
}
Ca me semble également simple en PHP mais cela ne fonctionne pas...

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
<?php
$monfichier = fopen("...", "r") ; // ouverture en lecture
 
while ( !feof($monfichier) ) {
	$ligne = fgets($monfichier);
 
	if(preg_match('/^\[(Mon|Tue|Wed|Thu|Fri|Sat|Sun)/i', $ligne)) {
		print $ligne;
 
		while (!feof($monfichier)):
			$ligne2 = fgets($monfichier);
			print $ligne2;
			endwhile;	
	}
}
fclose ($monfichier) ;
 
?>
Merci d'avance.

SR