Ciao a tutti avrei un problemino nella lettura di un file di testo tramite php
Allora apro il file, lo leggo tutto e poi tramite alcune istruzioni cerco di ottenere alcuni dati.
Il file (formato txt) originalmente appare così (sarebbe tutto su una sola linea)
codice:
+ACI-Traffico Dati+ACI-
3xxxxxxxxx+ADs-0+ADs-0+ADs-0+ADs-0
3xxxxxxxxx+ADs-0+ADs-0+ADs-0+ADs-0
3xxxxxxxxx+ADs-0,2+ADs-0+ADs-0,2+ADs-0
3xxxxxxxxx+ADs-43,95+ADs-
0,05+ADs-0,1+ADs-43,8
3xxxxxxxxx+ADs-0+ADs-0+ADs-0+ADs-0
Bene al posto delle x ci sono dei numeri (sarebbero dei numeri di telefono), le formattazioni +ACI- +ADs- in realtà sono poste perchè sarebbe un file excel convertito e delimitato in txt, quindi nel procedere alla lettura ho fatto così
Codice PHP:
<?
$file='nomefile.txt';
$apertura = fopen($file, "r");
if(!$apertura) die ("Errore nell'apertura del file");
$dati = fread($apertura, filesize($file));
$dati = str_replace("+ACI-", " ", $dati);
$dati = str_replace("+AC0-", " ", $dati);
$dati = str_replace("+ADs-", " ", $dati);
?>
E fin qua se stampo $dati va tutto bene, poi cerco di ottenere il primo record composto da numero telefono (3xxxxxxxxx) e poi dai quattro valori successivi che da esempio sono (0 0 0 0)
Codice PHP:
<?
$posizioneA = 0;
$posizioneB = 0;
$posizioneC = 0;
$posizioneD = 0;
$posizioneE = 0;
//questo è un contatore, per ora sta a 1 ma va bene perchè sto testando per il 1 record
$testoInd = 'Traffico Dati ';
$tot2 = substr_count($dati, $testoInd, $posizioneN);
//" " <-- Significa che leggo il testo fino allo spazio
$posizioneA = strpos($dati, $testoInd, $posizioneA)+strlen($testoInd);
$lunghezza1 = strpos($dati, " ", $posizioneA)-$posizioneA;
$posizioneB = $posizioneA+$lunghezza1+1;
$lunghezza2 = strpos($dati, " ", $posizioneB)-$posizioneB;
$posizioneC = $posizioneB+$lunghezza2+1;
$lunghezza3 = strpos($dati, " ", $posizioneC)-$posizioneC;
$posizioneD = $posizioneC+$lunghezza3+1;
$lunghezza4 = strpos($dati, " ", $posizioneD)-$posizioneD;
$posizioneE = $posizioneD+$lunghezza4+1;
$lunghezza5 = strpos($dati, " ", $posizioneE)-$posizioneE;
$pr = 1;
$IND1 = Array();
$IND2 = Array();
$IND3 = Array();
$IND4 = Array();
$IND5 = Array();
$TESTO = Array();
while ($pr <= $tot2){
$IND1[$pr] = substr($dati,$posizioneA,$lunghezza1);
$IND2[$pr] = substr($dati,$posizioneB,$lunghezza2);
$IND3[$pr] = substr($dati,$posizioneC,$lunghezza3);
$IND4[$pr] = substr($dati,$posizioneD,$lunghezza4);
$IND5[$pr] = substr($dati,$posizioneE,$lunghezza5);
$posizioneA = strpos($dati, $testoInd, $posizioneA)+strlen($testoInd);
$lunghezza1 = strpos($dati, " ", $posizioneA)-$posizioneA;
$posizioneB = $posizioneA+$lunghezza1+1;
$lunghezza2 = strpos($dati, " ", $posizioneB)-$posizioneB;
$posizioneC = $posizioneB+$lunghezza2+1;
$lunghezza3 = strpos($dati, " ", $posizioneC)-$posizioneC;
$posizioneD = $posizioneC+$lunghezza3+1;
$lunghezza4 = strpos($dati, " ", $posizioneD)-$posizioneD;
$posizioneE = $posizioneD+$lunghezza4+1;
$lunghezza5 = strpos($dati, " ", $posizioneE)-$posizioneE;
$TESTO[$pr] = $IND1[$pr].' '.$IND2[$pr].' '.$IND3[$pr].' '.$IND4[$pr].' '.$IND5[$pr].'
';
echo '<font color="white">'.$TESTO[$pr].'
';
$pr = $pr+1;
}
?>
Bene attualmente se apro la pagina php mi da questo come risposta
codice:
3xxxxxxxxx 0 0 0 0 3xxxxxxxx
Quindi mi stampa il primo numero di telefono, mi stampa i quattro valori di mio interesse ma mi stampa pure il secondo numero di telefono.
Avrei quindi bisogno di una mano, perchè se tolgo l'ultima parte ($posizione E, $lunghezza5 e $IND5[$pr], mi stampa
E quindi manca un valore
Grazie mille a tutti