<?php
$txt_data = "BEGIN
#1 
#2 
#3 
#4 
#5 
#6 
1       2015-05-31  2001-11-24  'Name Surname'      ID_1        0 
2       
2011-04-01  ?           ?                   ID_2        1 
2       2013-02-24  ?           ?                   
ID_3        1 
2       2014-02-28  ?           'Name Surname'      ID_4        2 
END
";

    $loop_pattern = "/BEGIN(.*?)END/s";
    preg_match_all($loop_pattern, $txt_data, $matches);
    $loops = $matches[0];

    $loops_count = count($loops);

    foreach ($loops as $key => $value) {
        $value = trim($value);
        $pattern = array("/[[:blank:]]+/", "/BEGIN(.*)/", "/END(.*)/");
        $replacement = array(" ", "", "");
        $value = preg_replace($pattern, $replacement, $value);

        preg_match_all( '/^#\d+/m', $value, $matches );
        $keys = $matches[0];

        $value = preg_replace( '/^#\d+\s*/m', '', $value );

        $value = str_replace( "\n", " ", $value );

        $pattern = '/'.str_repeat( "('[^']+'|\S+)\s+", count( $keys ) ).'/';

        preg_match_all( $pattern, $value, $matches );

        $values = array_combine( $keys, array_slice( $matches, 1 ) );

        print_r( $values );
    }
