Holas, Tenshii.
Debes estudiar bien la estructura de tu archivo txt, de modo de saber que siempre, por ejemplo, en la fila [4] vas a tener los meses, por lo que esa fila te generará un array de 13 elementos (los 12 meses más "Día"). Luego, en la fila [5] tienes otro tipo de encabezados, que al separarlos con explode, te dará un array de aprox. 24 elementos, pero que tú sabes que en verdad se trata de un par de títulos por cada mes. En la fila [6] vuelves a tener diferente encabezado, esta vez para indicar hora y minutos, si no me equivoco, y nuevamente, por cada 4 de ellos tienes un mes de la fila [4].
Ya a partir de la fila [7] tienes tus datos como tal, y sabes que al hacer explode, te debiera dar siempre un array de 25 elementos aprox. (2 horas por cada mes, más el día).
Una forma limpia de trabajar es crear una estructura en php que emule a la del archivo txt, en cuanto a la "tabla", vale decir, un array multidimensional, donde tengas en un eje los encabezados que ya conoces, y en el otro eje, los días del mes.
Luego, tomas los valores del archivo de texto, y los almacenas en el array estructura, en la posición (coordenada) que le corresponde. Algo como:
Ejemplo:
Código PHP:
// array estructura:
$meses = array(1 => "Enero", 2 => "Febrero"); // etc con todos los meses
$estructura = array();
// llenado de array
$fila = 0;
$file = fopen("sol2013.txt", "r");
while(!feof($file))
{
if ($fila >= 7 && $fila <= 38)
{
$dades = fgets($file)."<br/>";
$dades2 = explode(" ", trim($dades));
$dia = $dades2[0];
$pos = 1;
foreach ($meses as $mesNum => $mesTxt)
{
$estructura[$mesNum][$dia]["Ort"] = $dades2[$pos];
$pos++;
$estructura[$mesNum][$dia]["Ocas"] = $dades2[$pos];
$pos++;
}
}
$fila++;
}
fclose($file);
print_r($estructura);
Saludos!