Il n'y a pas grand chose de miraculeux que tu puisses faire avec les regex, le mieux étant de lire le log ligne par ligne (avec stream_get_line), de séparer tous les champs de la ligne de log (tu peux éventuellement faire un filtrage basique des lignes auparavant) et de regarder s'il y a les champs qui t'intéressent.
Sinon avec les regex, il y a la solution plutôt bourrin avec l'intégralité du fichier dans une variable, qui consiste à empiler des tests avant (lookahead):
/^(?=.*matricule=(\S*))(?=.*autrechamps=(\S*))/m
Les lookaheads n'ont pas de largeur, ils ne consomment pas de caractères donc chacun d'eux est testé depuis le début de la ligne.
Mais plus tu as de champs à extraire moins c'est efficace, car chaque test doit parcourir toute la ligne dans le pire des cas.
Partager