• User Newbie

    Da txt a XML.

    Ciao, ho un piccolo problema nel rimaneggiare un file di testo che si trova su una macchina dedicata. La mia intenzione sarebbe quella di leggere questo file ogni 10 secondi circa e riscriverlo nel mio hosting come xml.
    Per leggerlo nessun problema e per farlo sto usando questo codice:

    [PHP]
    <?php
    $file = @fopen("text.txt", "r");
    if ($file) {
    while (($line = fgets($file, 4096)) !==false){
    echo $line;
    }
    fclose($file);
    }
    ?>
    [/PHP]

    Il problema arriva per via della formattazione del file di testo (almeno per me), all'inizio ho dei dati che più o meno sono in grado di maneggiare ma poi riporta un singolo valore per ogni riga per un tot di righe e poi rincomincia, e questo lo fa in base a quanti utenti sono collegati.
    Vi metto un esempio del file di testo:

    
    Località=luogo
    Sessione=7
    Mezzo=19
    CurET=4451.006
    EndET=-2147483648.000
    0
    Utente1
    13
    1
    2
    25.990
    55.778
    98.127
    26.548
    56.606
    -1.000
    -1.000
    106.335
    2
    0
    1
    18
    0.000
    0.000
    15
    -141.521
    6.141
    1
    Utente2
    27
    1
    1
    26.575
    57.181
    100.368
    28.991
    59.366
    -1.000
    -1.000
    102.441
    1
    0
    1
    15
    -0.934
    95.504
    0
    -111.840
    85.760
    
    

    Come ho detto per le prime 5 righe non dovrei aver grossi problemi, tutto nasce dalla sesta in poi...perchè se prima leggevo il dato che mi interessava grazie al separatore = adesso come faccio a dirgli che il separatore non c'è più e di leggere riga per riga?
    E poi soprattutto come si fa ad indicargli che dalla riga 6 alla 27 (questo è un dato fisso qualora ci sia collegato almeno un utente, in quanto la quantità di righe è sempre la stessa) è una serie di dati e che dalla 28esima rincomincia (la ripetizione viene fatta in base a quanti utenti sono collegati) e bisogna inserire i dati in tag uguali a quelli della precedente serie?

    E' fattibile come lavoro?

    :gthi:


  • ModSenior

    Ciao antonio_m,
    il metodo più semplice:
    [php]
    $text = file_get_contents('text.txt');
    $righe = explode('\n', $text);
    foreach($righe AS $riga)
    {
    $valori = explode('=', $riga);
    echo $valori[0]; // Rappresenta il valore prima dell'uguale (Se l'uguale non c'è rappresenta tutto il valore)
    if(isset($valori[1])) // C'è un secondo valore? Quindi c'era l'uguale in questa riga
    echo $valori[0];
    }
    [/php]
    Ho inserito i commenti per aiutarti la comprensione, se hai domande chiedi pure.


  • User Newbie

    Ciao, ti ringrazio infinitamente per la tua risposta. Nei prossimi giorni avrò un po' più di tempo e ci lavorerò su.

    Grazie ancora per la disponibilità.

    :gthi: