Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725

    Lettura Parti di un File

    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($aperturafilesize($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
    codice:
    3xxxxxxxxx 0 0 0
    E quindi manca un valore

    Grazie mille a tutti
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  2. #2
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Uppete
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  3. #3
    Secondo me ti sei complicato la vita... con qualche espressioncina regolare risolvevi più semplicemente a mio avviso.

    In definitiva cosa devi fare? "pulire" il file?

  4. #4
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Originariamente inviato da psycho54h
    Secondo me ti sei complicato la vita... con qualche espressioncina regolare risolvevi più semplicemente a mio avviso.

    In definitiva cosa devi fare? "pulire" il file?
    Purtroppo non me la cavo troppo bene con le espressioni regolari.
    In sintesi devo stampare a video il file diviso in righe, su ogni riga il numero di telefono con i quattro rispettivi valori, successivamente intendo inserire le singole linee in Db
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  5. #5
    Una volta filtrato e tolti quei ADs ecc, puoi cercare una cosa del genere:

    codice:
    [0-9]{5,} ([0-9]+[,]?[0-9]* )*
    Fai un po' di prove, l'ho scritta al volo...

    Esercitati con Dreamweaver che permette di cercare all'interno del codice tramite espressioni regolari.

  6. #6
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Originariamente inviato da psycho54h
    Una volta filtrato e tolti quei ADs ecc, puoi cercare una cosa del genere:

    codice:
    [0-9]{5,} ([0-9]+[,]?[0-9]* )*
    Fai un po' di prove, l'ho scritta al volo...

    Esercitati con Dreamweaver che permette di cercare all'interno del codice tramite espressioni regolari.
    Grazie provo a studiarmela un po
    Edit: Ma è possibile modificare la stringa e far si che legga fino alla prossima stringa numerica di 10 cifre?
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  7. #7
    Guarda, a me sembravano impossibili da capire, perché le vedevo tutte in blocco, un ammasso di simboli strani, ma se entri nell'ottica, alla fine, sono delle fesserie. C'è un ottimo tutorial su html.it, te lo consiglio.

    Da quando ho imparato ad usarle è tutta un altra storia...

  8. #8
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Originariamente inviato da psycho54h
    Guarda, a me sembravano impossibili da capire, perché le vedevo tutte in blocco, un ammasso di simboli strani, ma se entri nell'ottica, alla fine, sono delle fesserie. C'è un ottimo tutorial su html.it, te lo consiglio.

    Da quando ho imparato ad usarle è tutta un altra storia...
    si purtroppo mi ci sono già imbattuto, il tutorial visto, son riuscito a farne una funzionante con grossa difficoltà tempo fa
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  9. #9
    Originariamente inviato da Aires
    Edit: Ma è possibile modificare la stringa e far si che legga fino alla prossima stringa numerica di 10 cifre?
    Sì.
    Ma ti conviene fare una domanda specifica sull'argomento.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.