mmm dovresti provare a fare cosa del tipo:



codice:
<?php
$lines = file ('statistiche2.log');

$dati = array[];//creo un array vuoto;

$searcIndexes = array("caller" => "Port/Number", "callStart" => "Start","callEnd" => "End","calledNumber" => "Number","duration" => "Duration(min:sec)","stauts" => "Status");//lista degli elementi da cercare

foreach ($lines as $value){
	$endOfStrHead = strpos($value,": ");//trovo la prima occorrenza della stringa ": "
	
	$strNoHead = trim(substr($value,$endOfStrHead+1));//taglio la stringa a partire dal valore successivo all'occorrenza di ": " eliminando gli spazi all'inizio e alla fine se ci sono.
	
	$explodedValues = explode(" : ",$strNoHead);//esplodo l'array sul separatore " : "
	
	$linearValueArray = array();//creo un arrayi dove metto i miei dati tutti spezzati lo creo qui così da averlo pulito per ogni riga
	
	foreach($explodedValues as $ExValue){
	
		$innerValue = explode(" ",$ExValue);//esplodo sull " " gli elementi separati su " : "
	  
		foreach($innerValue as $InValue){
			$linearValueArray[] = $InValue;//nell'array avrro le singole "parole" 1 per elemento.
		}
	
		foreach($searcIndexes AS $key => $index){
	
			$keySearched = in_array($index,$linearValueArray);//cerco le chiavi che mi interessano (elemnti da cercare) per avere il valore della chiave
	  
			if($keySearched !== false){//se non ho un falso boleano (in array può ritornare 0 che con != può essere scambiato per falso booleano )
				$dati[$key] = $linearValueArray[$keySearched+1];//il valore successivo alla chiave trovata è l'elemento che mi interessa e lo salvo usando la chiave dell'emento trovato come chiave per il valore.
			}
		}
	}
}

?>
non è testato quindi potresti avere degli errori sparsi in giro, pero dovrebbe darti in $dati quello che ti serve...