Предположим есть такой текст:
###alpha###
blablabla
dsdsdsjlk
###beta###
foo
bar
sd jaj sak
saklas
3452###sigma###
###gama###
4
###INTRO###
Introduction
There are: alpha, beta & gama
Здесь "заголовки" начинаются с начала строки и окружены шарпами. В примере sigma - не заголовок, т.к. не с начала строки.
Надо порезать текст в массив:
array('alpha' => 'blablabla', 'beta' => 'foobar', …);
хочется использовать preg_match() или preg_match_all() для раскусочивания.
<?php
$str = <<<FOO
a: 1
b: 2
c: 3
FOO;
preg_match_all('/(?P<name>\w+): (?P<digit>\d+)/', $str, $matches);
var_export(array_combine($matches['name'], $matches['digit']));
Выводит
array ( 'a' => '1', 'b' => '2', 'c' => '3', )
Но вот с многострочным текстом не получается.