Visualizzazione risultati 1 fino 9 di 9

Discussione: Eliminare \n fine di una stringa presa da file

  1. #1
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito Eliminare \n fine di una stringa presa da file

    Salve. Come da titolo, vorrei eliminare il '\n' alla fine di una stringa prelevata da un file:

    ad esempio:

    prova.txt
    Codice:
    1
    12
    ciao
    4
    3
    Codice PHP:
    $stream = fopen("prova.txt","r");
    [...]
    while(
    $riga = fgets($stream,255))
    {
    echo
    $riga;
    }
    Ad esempio, in questo caso $riga conterrà una riga alla volta, ma alla fine ha il \n {che ha anche il file.}

    Come posso eliminare questo \n??

    Io ho porvato così:

    $riga = substr($riga,"0",(strlen($riga-2))); //elimino gli ultimi 2 caratteri {provato anche eliminandone solo 1}
    $riga = str_replace('\n','',$riga); //elimino i \n

    Con questi non sono riuscito.

    Sul forum, ho trovato questo:

    $riga = str_replace(chr(13).chr(10),'',$riga);

    E su EasyPHP FUNZIONA!!!

    ...Ma poi ho portato tutto su AV e non funziona

    Come posso fare??

    Grazie,
    Ciao!
    Ultima modifica di alemoppo : 20-06-2009 alle ore 22.14.24

  2. #2
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    $riga = str_replace(chr(13).chr(10),'',$riga);
    E su EasyPHP FUNZIONA!!!
    In Windows per andare a capo si utilizza il carriage return + il line feed (ASCII: 13+10), nei sistemi *nix il solo carattere newline (ASCII: 10).
    Prova dunque con:

    Codice PHP:
    $riga = strtr($riga,chr(10),'');
    EDIT: mi ero perso un pezzo :S

    $riga = str_replace('\n','',$riga); //elimino i \n
    Per il \n devi necessariamente utilizzare gli apici doppi:

    Codice PHP:
    $riga = strtr($riga,"\n",'');
    Comunque dovrebbe bastare pure un rtrim() ;)

    Ciao!
    Ultima modifica di programmazioned : 20-06-2009 alle ore 22.29.56

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    grazie, ma:

    strstr(stringa, stringa): cerca la seconda stringa all'interno della prima, e restituisce la prima stringa a partire dal punto in cui ha trovato la seconda. strstr('Lorenzo', 're') restituisce 'renzo'. Restituisce una stringa se la ricerca va a buon fine, altrimenti il valore booleano FALSE. La funzione stristr() funziona allo stesso modo ma non tiene conto della differenza fra maiuscole e minuscole.
    Ti stai confondendo con str_replace() ??

  4. #4
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    strtr, non strstr !
    Leggi su che ho editato, mi ero perso una parte del tuo post.
    Ciao!
    Ultima modifica di programmazioned : 20-06-2009 alle ore 22.52.57

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Non funziona... Ultimamente, qualcuno mi ha attaccato qualche malocchio perché su AV non mi funziona niente ..

    Ciao!

  6. #6
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Quale soluzione non funziona?
    Sei sicuro che il carattere finale sia un newline?
    Soprattutto, hai provato (*)trim()?
    Ciao!

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Adesso provo il trim()

    EDIT: comunque cosa centrano gli spazi??

    Va be: provo!

    EDIT: non funziona..
    Ultima modifica di alemoppo : 20-06-2009 alle ore 22.56.55

  8. #8
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    EDIT: comunque cosa centrano gli spazi??
    Le funzioni (*)trim non eliminano soltanto gli spazi:
    Citazione Originalmente inviato da php.net

    * " " (ASCII 32 (0x20)), an ordinary space.
    * "\t" (ASCII 9 (0x09)), a tab.
    * "\n" (ASCII 10 (0x0A)), a new line (line feed).
    * "\r" (ASCII 13 (0x0D)), a carriage return.
    * "\0" (ASCII 0 (0x00)), the NUL-byte.
    * "\x0B" (ASCII 11 (0x0B)), a vertical tab.
    Ciao!
    Ultima modifica di programmazioned : 20-06-2009 alle ore 22.56.06

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Ma perché il \n di linux, credo sia diverso da quello di windows.
    Quindi, visto che il file l'ho scritto con blocco note...

    Adesso provo a farlo scrivere dal server di AV con fwrite...

    Grazie,
    Ciao!

    ASPETTA: forse sto sostituendo un altro file... :s

    EDIT:

    Sto sostituendolo in "/" invece che in "/nome cartella" .. che scemo!!

    EDIT (FINALE )

    FUNZIONA!!! --se son scemo, cosa ci posso fare ??

    GRAZIE!!!! {bastava un trim()}
    Ultima modifica di alemoppo : 20-06-2009 alle ore 23.18.05

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •