Filtrer un fichier

Petit nouveau ! | 3 Messages

15 avr. 2016, 15:51

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.

Mammouth du PHP | 2703 Messages

15 avr. 2016, 15:56

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]
...

Petit nouveau ! | 3 Messages

15 avr. 2016, 16:03

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.

Mammouth du PHP | 2703 Messages

15 avr. 2016, 16:06

tu fais un while tant que le $i+n n'aboutit pas à la ligne que tu cherches.

Petit nouveau ! | 3 Messages

15 avr. 2016, 16:22

Ca fait donc une boucle while dans une boucle for toutes deux indexées sur le i ?