Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    10

    Lettura caratteri file txt

    Ciao a tutti, sono nuovo del forum e novello in php.
    Vorrei sapere come leggere un determinato carattere da un file txt.
    In pratica sto realizzando una pagina x un mio amico che legge il file txt creato dalla sua stazione metereologica che riporta una stringa come quella che segue:
    aaaammgg hh:mm:ss tt.t uu.u pppp.p PPPP.P TT.T UU.U VV.V DDD GG.G WW.W RRRR.R SSSS.S ZZZZ.Z

    tt.t temperatura interna
    uu.u umidità relativa interna
    pppp.p pressione assoluta
    PPPP.P pressione relativa
    TT.T temperatura esterna
    UU.U umidità relativa esterna
    VV.V velocità del vento in Km/h
    DDD Direzione del vento in °
    GG.G temperatura di rugiada esterna
    WW.W wind chill
    RRRR.R pioggia ultima ora
    SSSS.S pioggia ultime 24 ore
    ZZZZ.Z pioggia totale

    Ovviamente le lettere saranno sostituite da numeri (tutti su un'unica riga) e vorrei appunto decidere quali dati leggere e visulaizzarli sulla determinata cella di interesse della tabella.
    Ho provato con il seguente code:

    <?php
    $fp = fopen('file.txt', 'r');
    while (false !== ($char = fgetc($fp))) {
    echo "$char\n";
    }
    ?>

    dove file.txt sta per nomefile.txt e in $char\n, "n" sta per il numero di carattere (arrivano a 100 caratteri compresi gli spazi)
    ma in visualizzazione mi da questo risultato:

    20081211 00:12:51  tt.t  uu.u  pppp.p  PPPP.P  TT.T  UU.U  VV.V  DDD  GG.G  WW.W  RRRR.R  SSSS.S  ZZZZ.Z   

    Per prova il file txt caricato nel server riporta la stringa che ho indicato prima contenente solo lettere anzichè i valori in numeri che da la stazione meteorologica.

    Spero che possiate aiutarmi e vi ringrazio in anticipo.

  2. #2
    basta creare un array e visualizzarne le varie parti, ad esempio per vedere la data e l'ora:

    Codice PHP:
    $txt "aaaammgg hh:mm:ss tt.t uu.u pppp.p PPPP.P TT.T UU.U VV.V DDD GG.G WW.W RRRR.R SSSS.S ZZZZ.Z";
    $array explode(' '$txt);
    echo 
    "data: ".$array[0].' ora: '.$array[1];
    // visualizza tutto il contenuto dell'array generato da EXPLODE
    print_r($array); 

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    10
    Scusa Emulman
    forse non ho capito o non mi sono spiegato bene.
    Il file vine caricato ogni tot ore e quandi sarà sempre diverso per cui penso sia necessario aprirlo di continuo con fopen.
    Come ho già detto sono novello di php e vorrei capire meglio l'array e magari avere tutto il codice<?php.........?> completo da usare ogni volta che voglio leggere il mio dato (n carateri). Premetto che dovrò leggere dai 2 agli 8 caratteri contemporaneamente. (es. pppp.p).
    Se non ho capito male, in questa riga "$array = explode(' ', $txt);" dovrò mettere tra i due apici il numero di carattere che voglio leggere. Ma se volessi leggere il carattere 35,36,37,38?
    Scusami per l'ignoranza.
    Ciao

  4. #4
    figurati, non c'è mica da vergonarsi ad essere principianti, ci siamo passati tutti..

    nella riga che ti ho dato

    $array = explode(' ', $txt);

    significa "crea l'array di nome $array a partire dalla stringa di testo $txt e dividendola dove c'è uno spazio (indicato da ' ' dove fra gli apici..non c'è nulla, solo uno spazio!)
    nel caso di $txt = "aaaammgg hh:mm:ss tt.t uu.u pppp.p PPPP.P TT.T UU.U VV.V DDD GG.G WW.W RRRR.R SSSS.S ZZZZ.Z" essa verrà divisa in pezzetti separati dagli spazi, ed ogni pezzetto verrà inserito in un elemento dell'array. Poichè i vari pezzi in un array sono numerati da un indice che parte da zero, con echo "data: ".$array[0].' ora: '.$array[1]; visualizzo i primi due pezzi della stirnga di testo: il primo è aaaammgg cioè la data e il secondo è cioè l'ora. Per cui il terzo pezzo ($array[2]) sarà quello con tt.t , il quarto ($array[3]) quello con uu.u e così via.
    L'ultima riga print_r($array) visualizza il contenuto dell'array completo

    Array ( [0] => aaaammgg [1] => hh:mm:ss [2] => tt.t [3] => uu.u [4] => pppp.p [5] => PPPP.P [6] => TT.T [7] => UU.U [8] => VV.V [9] => DDD [10] => GG.G [11] => WW.W [12] => RRRR.R [13] => SSSS.S [14] => ZZZZ.Z )

    i numeri fra parentesi quadri seguiti da => rappresentano il contenuto dei pezzetti dell'array

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    10

    Tutto OK

    Ciao Emulman
    ci sono riuscito e ti ringrazio per i tuoi chiari consigli. Sei il N°1.
    Oltre a ringraziarti vorrei dirti che se dovessi avere ancora problemi gradirei continuare questa discussione contando sui tuoi ottimi consigli.
    Grazie ancora.

  6. #6
    quando vuoi son qua, o scrivimi un msg privato..ciao e grazie epr i complimenti..quant'è umano lei..

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    10

    Upload

    Vista la disponibilità e la professionalità scusami ma ne approfitto.
    Devo ora creare una paginaetta per l'upload del famoso file NOW.txt che contiene i dati da leggere.
    Ho torvato diversi script in rete ma preferisco il tuo aiuto.
    Mi puoi indicare il picolo form per l'upload e lo scrip php necessario commentato?
    Grazie

  8. #8
    prendi questa paginetta e salvala come UPLOAD.PHP

    Codice PHP:
    <?php
      
    // quando hai cliccato SUBMIT nel form viene eseguito questo codice
      
    if ($_REQUEST['id']) {
        
    // directory sul server dove fare l'upload
        // $_SERVER["DOCUMENT_ROOT"] rappresenta la directory radice (root) del tuo sito a cui viene aggiunta una directory che devi creare nella root del tuo sito
        
    $upload_dir $_SERVER["DOCUMENT_ROOT"] . "/upload";
        
    // $_FILES["upfile"]["name"] contiene il nome del file da spostare; se non hai scelto nulla appare la seguente scritta
        
    if (trim($_FILES["upfile"]["name"]) == "")
          echo 
    "Non hai indicato il file da uploadare !
    "
    ;
        else {
          
    // hai messo un nome di file da uppare
          
    if (@is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
             
    // sposta il file nella directory prescelta da $upload_dir
             
    if (@move_uploaded_file($_FILES["upfile"]["tmp_name"], "$upload_dir/$file_name"))
               echo 
    "file ".$_FILES["upfile"]["name"]." spostato!";
             else
               echo 
    "Impossibile spostare il file, controlla l'esistenza o i permessi della directory dove fare l'upload.";
          }
        }
      }
    ?>
    <html>
    <head><title></title></head>
    <body>

    <form action="upload.php?id=1" method="post" enctype="multipart/form-data">
    file da spostare:<input type="file" name="upfile">
    <!-- questa riga impone che si può spostare solo file grandi al massimo 10000 byte
    <input type="hidden" name="MAX_FILE_SIZE" value="10000">
    <input type="submit" value="Invia il file">
    </form>
    </body>
    </html>

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    10

    Erroere

    Ciao Emulman
    eseguendo il tuo codice ricevo il segunete erroe non appena apro la pagina upload.php:

    Notice: Undefined index: id in C:\Programmi\EasyPHP 2.0b1\www\upload.php on line 3

    Se proseguo e carico il file ricevo invece questo errore:
    Notice: Undefined index: DOCUMENT_WWW in C:\Programmi\EasyPHP 2.0b1\www\upload.php on line 6
    file NOW.TXT spostato!

    Premetto che per fare le prove in locale uso EasyPHP 2.0b1 e ho modificato la riga dove indico la root dove salvare il file così: $upload_dir = $_SERVER["DOCUMENT_WWW"] . "/upload"; in quanto la cartella principale di apache dove sono i file è www. All'interno di www ho poi creato la cartella upload.

    Se cerco il file nella cartella www non riesco a trovarlo da nessuna parte.
    Dove sbaglio?
    Inoltre ti dico che il file NOW.txt dovrà essere sovrascritto ogni volta perchè la stazione meteo lo aggiorna continuamente con lo stesso nome
    Grazie ancora e scusa il distrubo di domenica.

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    10
    Scusate il disturbo ma, dopo un breve periodo di pausa, ho la necessità di riaprire la discussione sulla lettura di file txt con PHP .
    Lo scrip funziona correttamente ma la variabile $txt dovrebbe visualizzare sempre il contenuto del nuovo file (che si chiama NOW.TXT) che contiene dei valori numerici al posto delle lettere.

    $txt = "aaaammgg hh:mm:ss tt.t uu.u pppp.p PPPP.P TT.T UU.U VV.V DDD GG.G WW.W RRRR.R SSSS.S ZZZZ.Z";
    $array = explode(' ', $txt);
    echo "data: ".$array[0].' ora: '.$array[1];
    // visualizza tutto il contenuto dell'array generato da EXPLODE
    print_r($array);


    Come posso visualizzare il contenuto del file NOW.TXT che si trova in una cartella chiamata upload nella variabile $txt in modo da poterne estrarre il contenuto con l'array

    questo è un esempio di file NOW.TXT:
    20070328 00:13:29 18.3 65 1006.3 1016.6 8.1 91 0 247 6.7 8.1 .5 33.6 85.4

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.