Page 1 sur 1

Filtrer un fichier

Posté : 15 avr. 2016, 15:51
par mgrade
Bonjour,

Je dispose d'un fichier qui se présente sous cette forme :

A1 **** ****** AAAA *******
A2 **** ****** ************
-----
Ak ****** *****  **********

B1 **** ****** ****** *****
B2 **** ****** ************
-----
Bk ****** *****  **********

A1 **** ****** ABAA *******
A2 **** ****** ************
----
Ak ****** *****  **********

Je souhaite récupérer la ligne qui commence par A1 et qui contient la chaine AAAA ainsi que les chaines qui se trouvent en dessous jusqu'à la prochaine ligne A1. Si la ligne A1 ne contient pas la chaine AAAA alors elle doit être ignorée ainsi que les lignes qui se trouvent en dessous jusqu'à la prochaine ligne A1.

Pour l'instant j'ai écrit :
$content=file('fichier.txt');
foreach($content as $ligne){
           if(strstr($ligne,"A1") AND strstr($ligne,"AAAA")){
                          echo $ligne;
           }
          else {
          }
Je ne sais pas comment prendre en compte ou non les lignes suivantes si le if est ou non verifié

Merci de votre aide.

Re: Filtrer un fichier

Posté : 15 avr. 2016, 15:56
par or 1
en utilisant un
for($i=0; $i < sizeof($content); $i++){
$ligne = $content[$i];
}
ainsi les lignes suivantes sont dans
$content[$i+1]
$content[$i+2]
...

Re: Filtrer un fichier

Posté : 15 avr. 2016, 16:03
par mgrade
Oui mais le nombre de ligne n'est pas constant apres le A1donc je ne le connnais pas à l'avance il faudrait pouvoir le stopper quand il rencontre un nouvel A1.

Re: Filtrer un fichier

Posté : 15 avr. 2016, 16:06
par or 1
tu fais un while tant que le $i+n n'aboutit pas à la ligne que tu cherches.

Re: Filtrer un fichier

Posté : 15 avr. 2016, 16:22
par mgrade
Ca fait donc une boucle while dans une boucle for toutes deux indexées sur le i ?