Nuova linea di output PHP in un file di testo

Mio form php che consente di salvare l’output in un file di testo colle il risultato di una stringa del tipo:

Name1Email1The Message1Name2Email2The Message2Name3Email3The Message3Name4Email4The Message4

Ma ho bisogno di spazi e/o caratteri. Io normalmente non uso PHP così non la capisco. Ho fatto a non trovare una risposta sul web, leggere anche alcune domande/risposte qui, ma questo non mi ha aiutato.

Forma:

<form action="mailer.php?savedata=1" method="post">
Your Name: <input type="text" name="name"><br>
Your Email: <input type="text" name="email"><br>
Your Message:<br> <textarea name="message" rows="5" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>

PHP

<?php
$savedata = $_REQUEST['savedata'];
if ($savedata == 1){ 
$data = $_POST['name'];
$data .= $_POST['email'];
$data .= $_POST['message'];
$file = "YOURDATAFILE.txt"; 

$fp = fopen($file, "a") or die("Couldn't open $file for writing!");
fwrite($fp, $data) or die("Couldn't write values to file!"); 

fclose($fp); 
echo "Your Form has been Submitted!";

}
?>
InformationsquelleAutor Darth Severus | 2012-10-16



8 Replies
  1. 17

    Come altre risposte di stato, è necessario aggiungere un carattere di fine riga dopo ogni campo.

    Diversi OS di utilizzare diverse terminazioni di linea, però, e quindi un “\n” non può essere visualizzata come una nuova linea di Windows, per esempio. Mahdi, ha detto, è possibile utilizzare Windows style “\r\n” terminatori di linea, oppure si può utilizzare il PHP_EOL costante in modo che le terminazioni di riga appropriata per il server in uscita, in questo caso il tuo codice sarebbe simile a

    $data = $_POST['name'] . PHP_EOL;
    $data .= $_POST['email'] . PHP_EOL;
    $data .= $_POST['message'] . PHP_EOL;
    • Grazie a tutti! Ho scelto la tua risposta, perchè i diversi OS argomento.
  2. 4

    È possibile utilizzare “\n” per scrivere una nuova linea.

    $data = $_POST['name'] . "\n";
    $data .= $_POST['email'] . "\n";
    $data .= $_POST['message'] . "\n";

    Proprio come una nota a margine, \n deve essere in doublequotes. Quando è circondato da apici non funziona.

  3. 3

    Quando è possibile concatenare i tuoi valori di input come che non hanno alcun punto e a capo; è possibile aggiungere usando il letterale "\n" o "\r\n". Per cercare di tenerli tutti insieme è possibile utilizzare l’operatore di concatenazione o utilizzare sprintf() come di seguito:

    $data = sprintf("%s\n%s\n%s\n", $_POST['name'], $_POST['email'], $_POST['messge']);
    $file = "YOURDATAFILE.txt"; 
    file_put_contents($file, $data, FILE_APPEND);

    Anche io uso file_put_contents() con il FILE_APPEND bandiera per aggiungere dati a un file e salvare alcune righe di codice.

  4. 2

    Io di solito combinare New Line con Carriage Return:

    $data = $_POST['name'] . "\r\n";
  5. 1

    Controllare il filtro che si utilizza per la pulizia di input di un form. Potrebbe essere la rimozione del 0x0a caratteri di nuova riga del modulo di ingresso.

    Ho il testo salvato da un ‘textarea’ tag ed è corretto.
    Utilizzando un visualizzatore ESADECIMALE, vedo che ogni newline dal “textarea” campo viene tradotta a carattere hex 0a. (decimale 10) Wikipedia elenca questo come UTF-8 “carattere di ” a capo” o “LF.” LF è stato breve per la Linea di Alimentazione, dalla vecchia telescrivente giorni. https://en.wikipedia.org/wiki/UTF-8

    Così, le linee
    prova
    prova
    prova
    tradurre “4 65 73 74 0d 0a 74 65 73 74 0d 0a 74 65 73 74”
    Notare le due “0a” caratteri nella stringa, che sono l’equivalente \n.

    Questo non era evidente in un primo momento, perché l’espressione regolare stavo usando per pulire l’ingresso a sostituire il 0a carattere con uno spazio.

  6. 0

    questo funziona per me:

    echo "$data"."\r\n"; 
    • Mentre questo codice può rispondere alla domanda, fornendo ulteriori contesto sul perché e/o in che modo questo codice e rispondere alla domanda che migliora il valore nel lungo termine.
  7. -1

    Quando si tenta di estrarre i dati presentate online tramite un Modulo Web e per scrivere la stessa cosa in un file di testo che viene inserito sul web-server — senza sovrascrivere le informazioni già contenute in tale file di testo, quindi utilizziamo il seguente codice all’interno del tag:

    <html>
    <body>
    <form action="" method="">
    <input value="submit">
    <div>Name: <input value=""></div>
    <div>email: <input value=""></div>
    ...           ...         ...
    <div><button>Submit</button></div>
    </form>
    </body>
    </html>

    Sopra il Codice HTML è accoppiato con il seguente Codice PHP:

    <?php
    $fileName = 'fdata.txt';
    $fp = fopen('fdata.txt', 'a');
     $savestring = $_POST['name'] . ',' . $_POST['email'] ;
    fwrite($fp, $savestring);              
    fclose($fp);
    ?>

    Ma sopra due Codici portare a dati che viene aggiunto e corde insieme in un file di testo, vale a dire, ogni nuovo record (insieme di dati) estratto da successivi Web-Form non cominciare una nuova linea (non c’è interruzione di riga o di ritorno).

    Ho cercato in rete una Soluzione al Problema di cui sopra-come suggerito in rete, ho aggiunto “\r\n” (tra virgolette) e utilizzato anche ‘PHP_EOL ” (senza virgolette) come sotto:

    $fp = fopen('fdata.txt', 'a', "\r\n");
    $savestring =  \r\n . PHP_EOL .  ' ' . $_POST['name'] . ',' . $_POST['email'] . 
    PHP_EOL;

    Ancora non c’è stata nessuna interruzione di linea a tutti (il mio web-server e il mio desktop di Windows). Ciò significa che non vi era alcuna Soluzione praticabile nella conoscenza di uno dei milioni di Utenti di rete in tutto il Mondo. Sembra che il parametro ‘a’ sostituzioni “\r\n”, ‘PHP_EOL’, etc.

Lascia un commento