- Home
- Categorie
- Coding e Sistemistica
- Coding
- Da txt a XML.
-
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?
-
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.
-
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à.