Ta technique actuelle est très bien. Tu peux obtenir le même résultat en utilisant la même pattern que précédemment en chargeant tout le contenu du fichier dans une variable, mais avec preg_split (je suppose que le fichier commence par CE):
$result = preg_split('~\R(?=CE)~', $str);
Si le fichier ne démarre pas directement par un bloc, tu peux utiliser preg_match_all mais avec une pattern un peu plus complexe:
1 2 3
| if ( preg_match_all('~^CE(?>.*\R?)*?(?=CE|\z)~m', $str, $m) ) {
$result = $m[0];
} |
ou alors plus court (un peu moins guidée) mais moins efficace si les blocs sont longs:
1 2 3
| if ( preg_match_all('~^CE.*?(?=^CE|\z)~ms', $str, $m) ) {
$result = $m[0];
} |
Partager