Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272

    Problema con riscrittura file di testo

    C'è una cosa che non riesco a spiegarmi, vi spiego.

    In uno script con fopen e fputs salvo in un file di testo delle variabili di questo tipo:
    Codice PHP:
    $dati =  "{$_POST['titolo']}{$_POST['paragrafo']}$giorno\n"
    Il file si presenta così:

    Titolo1•Paragrafo1•24/01/2006
    Titolo2•Paragrafo2•24/01/2006
    Titolo3•Paragrafo3•21/12/2005

    Fin qui tutto bene.

    Successivamente in un altro script con file() metto ogni riga del file di testo in un array e ne elimino un elemento con unset()

    Codice PHP:
    $array_archivio file ('archivio.txt');
    unset (
    $array_archivio[2]); 
    Tutto ciò per riscrivere lo stesso file di testo senza la riga cancellata

    Codice PHP:
    $file fopen ('archivio.txt''w');
    foreach (
    $array_archivio as $valore)  {
      
    fputs ($file$valore);
    }
    fclose ($file); 

    Qui la cosa che mi fa ammattire: il file viene riscritto senza la riga che ho cancellato, ma adesso il file di testo si presenta con caratteri strani alla fine delle righe (a volte in tutte le righe altre volte solo in alcune apparentemente senza criterio logico :master: ). Posto un esempio

    Titolo1•Paragrafo1•24/01/2006
    Titolo2•Paragrafo2•24/01/2006
    Titolo3•Paragrafo3•21/12/2005

    La mia domanda è semplice: MA DA DOVE ACCIDENTI SONO SBUCATI 'STI QUADRATINI? PERCHE' AD OGNI OPERAZIONE DI RISCRITTURA SI MOLTIPLICANO? .
    Dico: tutto funziona come mi aspettavo ma 'sti quadratini non li digerisco e vorrei almeno sapere da cosa sono causati.
    Vado a dormire sperando di leggere una risposta-rivelazione domani.
    Conto su di voi.

  2. #2
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940

    Re: Problema con riscrittura file di testo

    Originariamente inviato da usecram
    C'è una cosa che non riesco a spiegarmi, vi spiego.

    Codice PHP:
    $dati =  "{$_POST['titolo']}{$_POST['paragrafo']}$giorno\n"
    Scusa ma non li hai messi tu?...

    [.:: JaguarXF ::.]
    __________________

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Quadratino = "\n": non sempre notepad digerisce "\n": strippalo dagli elementi dell'array e riaggiungilo. Scommetto che se apri con Wordpad la visualizzazione è "corretta".
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    I miei occhi vedono "quadratini" tra {$_POST['titolo']} ed {$_POST['paragrafo']} e tra {$_POST['paragrafo']} e $giorno...

    Del \n non m'interesso, anche se dovrebbe scrivere \r\n (Win).

    Così va?


    [.:: JaguarXF ::.]
    __________________

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272

    Mo' provo

    Grazie ragazzi ora provo con i suggerimenti. Anch'io avevo soffermato l'attenzione su \n .
    Per Mark2x, ci sono quadratini che vedi che ho aggiunti io come questo • per separare successivamente con explode() le tre sottostringhe della riga. Non mi riferisco a questi perché restano dove sono e non si 'moltiplicano'. Io intendo questi  che compaiono non desiderati dopo la riscrittura:

    Titolo1•Paragrafo1•24/01/2006
    Titolo2•Paragrafo2•24/01/2006
    Titolo3•Paragrafo3•21/12/2005

    Provo a mettere \r\n ed a strippare vediamo un po', tra breve il responso.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272
    Anche con \r\n non va.
    Scusate la mia ignoranza ma sono molto novizio di php: non riesco a strippare \n dagli elementi dell'array!Come si fa?

  7. #7
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Allora, io sul mio winXP / Firefox 1.5 non vedo caratteri strani alla fine delle tue righe.

    Quindi ti dò dritte un po' a caso...

    Allora prima di tutto fai un trim() qui:

    Codice PHP:
     fputs ($filetrim($valore)); 
    E facci sapere. Se il "carattere strano" non è tanto strano, tipo una tabulazione verticale (una volta mi è capitato!!) usa uno str_replace(codice ascii della tabulazione verticale - che non ricordo..,"",$valore);

    Stesso dicasi per altri caratteri speciali; al limite apri il tuo output con un editor binario e dagli un occhio.

    Se non ne vieni fuori, fai un

    Codice PHP:
     fputs ($filesubstr($valore,0,strlen($valore)-1)); 
    oppure

    Codice PHP:
     fputs ($filesubstr($valore,0,strlen($valore)-2..fino a...-10)); 
    etc a seconda di che ti esce, avendo cura di rimettere i \r\n se sono stati eliminati
    e te la cavi


    [.:: JaguarXF ::.]
    __________________

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272
    Hai ragione vedendo anch'io il 3d con Mozilla anzichè IE non vedo quadratini, ecco perché non ci intendevamo.
    Incomincio ad avere la sensazione di arrovellarmi su un dettaglio forse insignificante (del resto lo script funziona), ma sono fatto così se qualcosa non mi convince non mi do pace se prima non ne trovo la causa.
    Comunque se vuoi vedere l'aspetto del fantomatico quadratino apri il Blocco note del tuo WinXP e premi CTRL+BACKSPACE.
    Provo i suggerimenti.

  9. #9
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Bene allora è un carattere ASCII non stampabile da eliminare.
    Trova il suo ASCII-CODE ed eliminalo in modo pulito con str_replace.


    [.:: JaguarXF ::.]
    __________________

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    272

    Trovato ASCII-CODE

    Il codice ascii del 'quadratino' è ALT+0127 sul blocco note, come lo devo riportare x impostare la sua eliminazione con str_replace?
    Grazie

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.