php > preg_match_all("/^\s*(#+)\s*(.*)$/m", $txt, $matches); php > print_r($matches); Array ( [0] => Array ( [0] => # Main Title [1] => ## Level 1.1 [2] => ### Level 2.1 [3] => #### Level 3.1 [4] => #### Level 3.2 [5] => #### Level 3.3 [6] => ### Level 2.2. [7] => ### Level 2.3. [8] => ## Level 1.2 [9] => ## Level 1.3 ) [1] => Array ( [0] => # [1] => ## [2] => ### [3] => #### [4] => #### [5] => #### [6] => ### [7] => ### [8] => ## [9] => ## ) [2] => Array ( [0] => Main Title [1] => Level 1.1 [2] => Level 2.1 [3] => Level 3.1 [4] => Level 3.2 [5] => Level 3.3 [6] => Level 2.2. [7] => Level 2.3. [8] => Level 1.2 [9] => Level 1.3 ) )