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...