PHP - exploser des valeurs dans un tableau, la sortie sur l'onglet fichier séparé

J'ai le texte suivant dans un fichier appelé test_tab.txt (séparées par des tabulations):

header1 header2 header3
field1  field1a field1b; field1c
field2  field2a field2b
field3  field3a 
field4  field4a field4b; field4c; field4d; field4e
field5  field5a 
field6  field6a field6b; field6c

Je voudrais le convertir que pour les suivantes (également séparées par des tabulations, écrit à un autre fichier texte):

header1 header2 header3
field1  field1a field1b
field1  field1a field1c
field2  field2a field2b
field3  field3a 
field4  field4a field4b
field4  field4a field4c
field4  field4a field4d
field4  field4a field4e
field5  field5a 
field6  field6a field6c
field6  field6a field6c

Je suis nouveau en programmation en général, mais j'ai googlé autour de moi et je pense qu'une façon possible de le faire serait de créer un tableau et d'une certaine façon exploser le header3 paire clé-valeur. Je ne suis pas sûr de la façon d'aller sur la copie les champs sous header1 et header2.

Tout ce que j'ai en ce moment est un peu de code pour créer un tableau:

$mainarray = array(); 
foreach (file('test_tab.txt') as $row) { 
  list($header1, $header2, $header3) = explode("\t", $row); 
  $mainarray[] = array(header1 => $header1, header2 => $header2, header3 => $header3); 
} 

print_r($mainarray);

qui donne:

    Array
    (
        [0] => Array
            (
                [header1] => header1
                [header2] => header2
                [header3] => header3

            )

        [1] => Array
            (
                [header1] => field1
                [header2] => field1a
                [header3] => field1b; field1c

            )

        [2] => Array
            (
                [header1] => field2
                [header2] => field2a
                [header3] => field2b

            )

        [3] => Array
            (
                [header1] => field3
                [header2] => field3a
                [header3] => 

            )

        [4] => Array
            (
                [header1] => field4
                [header2] => field4a
                [header3] => field4b; field4c; field4d; field4e

            )

        [5] => Array
            (
                [header1] => field5
                [header2] => field5a
                [header3] => 

            )

        [6] => Array
            (
                [header1] => field6
                [header2] => field6a
                [header3] => field6b; field6c
            )

    )

Toutes les idées sur la manière d'aborder ce? Je suis l'aide de la version de PHP 5.3.10.

Utiliser les fonctions PHP fgetcsv() et fputcsv() pour travailler avec des valeurs séparées des fichiers; ou encore SPLFileObject

OriginalL'auteur ictl | 2013-07-04