Visualizzazione dei risultati da 1 a 5 su 5

Discussione: fopen, fget e substr

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    27

    fopen, fget e substr

    Ciao a tutti,
    approdo qui perchè ho un problema e non riesco a venirne a capo.

    Ogni riga del file txt che apro è lunga 534 caratteri.
    E qui avviene il problema. Buona parte dei caratteri che lo script deve leggere e TENERE in considerazione sono degli spazi vuoti.
    Le lunghezze dei vari campi sono fisse.

    Sembra che gli spazi vuoti non vengano presi in considerazione.
    Sbaglio io qualcosa o c'è qualcosa da sistemare che io non conosco?

    <?php
    $marzio = fopen("test.txt", "r");
    while (!feof($marzio)) {
    $buffer = fgets($marzio, 534);
    $sss=nl2br($buffer);
    $ciccio = substr($sss, 0 , 10);
    $ciccio1 = substr($sss, 10 , 13);

    if ($ciccio1 == "E01") {
    $ciccio2 = substr($sss, 13 , 32);
    } else {
    $ciccio2 = substr($sss, 13 , 31);
    }
    echo $ciccio, ' ', $ciccio1, ' ', $ciccio2;
    }
    fclose($marzio);
    ?>

    Ovviamnete lo script non è finito solo che mi trovo in questo punto morto che non riesco a risolvere.

    Altra cosa curiosa, nell if se cambio i valori solo di un substr, per esempio del primo, non succede nulla nella visualizzazione, ma solo se li cambio entrambe.
    Per esempio se al posto del 32 metto 31, lasciando invariato l'else, non accade nulla, ma se cambio anche il 31 con un 30 funziona, solo che a me serve solo togliere un carattere dal primo.
    Spero di esser stato chiaro e che qualcuno sappia aiutarmi.
    Grazie
    r00kie!

  2. #2
    usa fread e non fgets

    dopo di che ... non li vedi a video oppure tronca male?
    se non ti va perché non li vedi a video è normale, infatti l'html prevede un SOLO spazio tra caratteri ... per risolvere il problema ti basta o convertire tutti gli spazi in &amp;nbsp; oppure usare il tag pre (il contenuto lo immetti tra l'apertura e la chiusura del tag pre)

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    27
    Il problema è che li tronca quando cambio i valori nel substr.
    Se non li visualizzasse poco importa.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    27
    Scusa se posto un'altro mex, ma non mi fà modificare il precedente.
    Volevo solo aggiungere una cosa, con fread io specifico i byte che deve leggere del file che apro, invece io ho bisogno di specificare i byte della riga, cosa che "DOVREI" fare con substr se me lo permettesse, non capisco perchè non mi permetta di leggere il file carattere per carattere, nel senso sembra che non calcoli gli spazi vuoti.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    27

    Risolto

    Suona ridicolo, ma funziona...

    $buffer = fgets($marzio, 534);
    $sss1=nl2br($buffer);
    $sss=str_replace(" ", " ", $sss1);

    ovvero sia sostituisco uno spazio con uno spazio e li conteggia poi nei vari substr.

    <?php
    $marzio = fopen("test.txt", "r");
    while (!feof($marzio)) {
    $buffer = fgets($marzio, 534);
    $sss1=nl2br($buffer);
    $sss=str_replace(" ", " ", $sss1);
    $ciccio = substr($sss, 0 , 10);
    $ciccio1 = substr($sss, 10 , 3);
    if ($ciccio1 =="E01") {
    $ciccio2 = substr($sss, 35 , 9 );
    } else {
    $ciccio2 = substr($sss, 34 , 9);
    }

    if ($ciccio1 =="E01") {
    $ciccio3 = substr($sss, 45 , 64 );
    } else {
    $ciccio3 = substr($sss, 44 , 31);
    }

    $ciccio4 = substr($sss, 75 , 31);



    echo $ciccio,' ',$ciccio1,' ',$ciccio2,' ',$ciccio3,' ',$ciccio4;
    }
    fclose($marzio);
    ?>

    assurdo...ma funziona

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 © 2024 vBulletin Solutions, Inc. All rights reserved.