3v4l.org

run code in 300+ PHP versions simultaneously
<?php $fileContents = <<<TEXT #################### Section One #################### Data A Data B #################### Section Two #################### Data C Data D Data E #################### Section Three #################### Data F TEXT; preg_match_all( '~(?: ^\#{3,}\R \h*(\S+(?:\h\S+)*)\h*\R \#{3,} | \G(?!\A) ) \R (?!\#{3,})(.+) ~mx', $fileContents, $out, PREG_SET_ORDER ); foreach ($out as $set) { $heading = $set[1] ?: $heading; $result[$heading][] = $set[2]; } var_export($result ?? 'No qualifying data');

preferences:
27.95 ms | 405 KiB | 5 Q