mmm dovresti provare a fare cosa del tipo:
non è testato quindi potresti avere degli errori sparsi in giro, pero dovrebbe darti in $dati quello che ti serve...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. } } } } ?>

Rispondi quotando