> J'ai essayé des trucs comme :
> preg_grep ('#^pf: .+\(match\): pass (out|in) on (\n|.)+^pf:.+$#sm', $logs,
> PREG_GREP_INVERT);
> Mais cela ne matche pas.
>
> Je suis en PHP, mais c'est un problème de regexp.
Je ne crois pas que tu puisses t'en sortir comme ça, facilement, sans
farie de boucle. preg_grep() va examiner chaque ligne de tes logs,
indépendamment des autres, et va décider uniquement en fonction de ce
qu'il y a dans la ligne en question.
Je ferais une boucle explicite :
$logs = array(
'ligne 1 à conserver',
'ligne 2 à supprimer',
'ligne 3 qui vient juste après',
'ligne 4 à conserver'
);
$pattern = '/à supprimer/';
$filtered = array();
for ($i = 0; $i < count($logs); $i++) {
if (preg_match($pattern, $logs[$i]))
$i++; # skip this line and next line
else
array_push($filtered, $logs[$i]); # save line
}
print_r($filtered);
Edgar.