Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317

    Mi aggiunge un "|". non capisco il perchè :S

    Codice PHP:
    <?php
    function uno($a$b$c 'prova.txt')
    {

    global 
    $uno;

    $f=fopen($c'r');

    while(!
    feof($f))
        {
            
    $rr=fgets ($f1024);
            
    $d=explode('|'$rr);
        
            if ( 
    $d[$b] == $a // $A
            
    {
            
                for ( 
    $i=0$i<count($d); $i++ )
                {
                
                    
    $uno[$i] = $d[$i];
                    
                }
            }
        
        }
        
    fclose($f);

    }


    /* CONTENUTO PROVA.TXT
    1|a|b|c|d
    2|ccc|ccc|ccc|ccc
    3|ccc|ccc|ccc|ccc
    4|ccc|ccc|ccc|ccc
    */


    uno('a'1);

    foreach ( 
    $uno as $v ){

    print 
    "$v|";

    }

    ?>
    perchè l'output è questo:

    1|a|a|c|d
    | /* <--- ? */

    cosa centra quel "|" a capo????

  2. #2
    Che cosa ti restituisce questo codice?

    Codice PHP:
    var_dump($uno); 
    Inoltre, perchè usi una variabile globale invece di far restituire alla funzione uno() il valore che ti serve?

    Prima di accedere a $d[$b] dovresti verificarne l'esistenza (es. con isset()).

  3. #3
    è possibile che $uno contenga un elemento vuoto in fondo, cosa dovuta alla lettura del file probabilmente

    prima di lanciare l'explode fai un controllo con strlen per verificare che i dati letti con fgets siano presenti ( if (strlen($rr) == 0) ......... )

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    ho provato ad adottare tutti i vostri metodi ma nulla.

    var_dump restituisce questo
    Codice PHP:
    array(5) {
      [
    0]=>
      
    string(2"1|"
      
    [1]=>
      
    string(2"a|"
      
    [2]=>
      
    string(2"a|"
      
    [3]=>
      
    string(2"c|"
      
    [4]=>
      
    string(3"d
    |"


    Ho provato anche alcune varianti come "if ( $d[$i] == "\n" ){ continue;}
    ma niente...

  5. #5
    nell'if prova a fare strlen(trim($rr)) invece di strlen($rr)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    mi restituisce sempre lo stesso errore.
    si blocca al primo ciclo e non restituisce nessun dato nell'array.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    nessuno che mi può aiutare?

  8. #8
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    Devi togliere i caratteri di fine riga che ci sono alla fine di ogni riga del file di testo.
    Un modo per farlo è questo:

    Codice PHP:
    .....
    .....
    if ( 
    $d[$b] == $a // $A
    {
           
    $d[$i] = str_replace("\r"""$d[$i]);
           
    $d[$i] = str_replace("\n"""$d[$i]);
           for ( 
    $i=0$i<count($d); $i++ )
           {
          
                
    $uno[$i] = $d[$i];
                    
           }

    .....
    ..... 
    magari ce ne sono di meglio....però dovrebbe funzionare.
    Crestron Control Systems and AMX Control Systems Programmer

  9. #9
    Originariamente inviato da zacca94
    nessuno che mi può aiutare?
    non capisco il problema.

    1) perche' ti stampa l'ultimo pipe o perche' non scorre il file?

    se per il pipe a fine stringa questo c'e' perche' glielo fai stampare tu:

    print "$v|";

    se e ' per le righe del file ti trova solo quelle che tu gli dici di trovare....

    uno('a', 1);

    cioe' la lettera "a" all'indice 1

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    Credo che il problema sia che l'ultimo pipe glielo stampa sulla riga successiva.
    Crestron Control Systems and AMX Control Systems Programmer

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.