Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    40

    estrarre i dati da un file

    Il file in questione è cosi
    codice:
    DXS*9252131001*VA*V1/6*1 ST*001*0001
    CA1*943207729*959923779*118*168059 
    CA2*17480*282*545*5 
    CA3*4035*3845*190*0*273210*263990*9220*0*0*0 
    CA4*110*0*9125*0 
    CA8*0*0 
    CA9*0*0 
    CA10*0*0
    Non so come fare l'explode dato che è intervallato si da degli * ma per esempio
    alla 4 riga l'estrazione mi esce cosi:
    "0
    CA4"

    io invece vorrei avere ogni singolo dato tra gli * e l'invio
    in modo che esca 0 poi CA4

    è possibile? Come?
    Sapreste aiutarmi.

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    prova una cosa di questo tipo

    Codice PHP:
    <?php

    $read 
    file("testo.txt");

    foreach (
    $read as $value) {
        
    $string_exp explode("*"trim($value));    
    }

    ?>

  3. #3
    Ma intanto, lo esploderi per \n e poi successivamente per *

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    beh, si... ma perché fare due explode quando la funzione file() ti restituisce già le singole righe del file sorgente?

  5. #5
    Se si deve lavorare sul file una riga alla volta, allora e' meglio leggere una riga alla volta invece che caricare tutto il file in memoria. Magari non e' questo il caso, ma se si tratta - per esempio - di logfile da diverse centinaia di mega, la differenza e' decisamente sensibile.

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    k.b., non ho capito...
    tu come faresti su un file di dimensioni considerevoli? useresti file() oppure no?
    Nel caso negativo, come fai a "leggere una riga alla volta invece che caricare tutto il file in memoria"? E' una cosa che non sono mai riuscito a capire fino in fondo...

  7. #7
    C'e' una funzione apposta: http://php.net/fgets

    fgets() legge una riga da un filehandle precedentemente aperto con fopen, mentre file() legge TUTTO il file mettendolo in un array.

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    capito, conoscevo quella funzione solo di nome, ma non l'ho mai dovuta usare...

    in genere i file che devo leggere io sono di dimensioni trascurabili, si risolve bene con file() o file_get_contents()

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.