2016-06-28 22 views
6

Per i miei corsi PHP, devo creare un blocco note che inizia con un testo di esempio, quando lo modifico e clicco sul pulsante Salva, il testo all'interno del file viene modificato e salvato. Quindi se aggiorno la mia pagina/apro direttamente il file ho il nuovo contenuto modificato dall'utente visualizzato.Spazio inatteso all'inizio del file

Funziona, ma ho uno spazio inaspettato nel mio file.

Se metto al primo carattere nella prima riga "testo di esempio", io non vedrò "testo di esempio", ma invece:

 sample text 

E questo è solo per la prima linea , che cosa succede se ho modificato il file manualmente o con la mia pagina. Tutte le righe successive iniziano dai primi caratteri.

Di seguito il mio file notes.txt (dove i miei appunti sono) dopo una modifica dalla pagina web:

Mes jeux préférés:
 => Fallout 3
 => Natural Selection 2
 =&#6 2; L4D2 

non vedo alcun carattere strano, all'inizio del file.

index.php:

<?php 

define('FICHIER_DE_NOTES', 'notes.txt'); 
$fichier = fopen(FICHIER_DE_NOTES, 'r+'); 

if (array_key_exists('note', $_POST)) { 

    $note = filter_var($_POST['note'], FILTER_SANITIZE_SPECIAL_CHARS); 
    ftruncate($fichier, 0); 
    fseek($fichier, 0); 
    fputs($fichier, $note); 
    $updateMessage = 'Vos notes ont été sauvegardés!'; 

} else { 

    $note = ''; 

    while ($ligne = fgets($fichier)) { 
     $note = $note . $ligne; 
    } 
} 

fclose($fichier); 

include 'index.phtml'; 
?> 

E il mio index.phtml:

<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Bloc Note</title> 
</head> 
<body> 
    <h1>Bloc Note</h1> 

    <form method="post" action="index.php" > 
     <p>Voici votre bloc note. Ajoutez-y du texte et cliquer sur "Sauvegarder".</p> 

     <textarea id="textarea" name="note" rows="16" cols="50"> 
      <?= $note ?> 
     </textarea> 
     <br/><br/> 
     <label> 
      <input type="submit" value="Sauvegarder"> 
     </label> 
     <?php if (isset($updateMessage)) { 
      echo $updateMessage; 
     } ?> 
    </form> 

</body> 
</html> 

io uso vim e PHP5.

Dimmi se hai bisogno di ulteriori informazioni.

risposta

1

Aggiorna i tuoi html:

<textarea id="textarea" name="note" rows="16" cols="50"><?php echo $note ?></textarea> 

o nel vostro script php:

if (array_key_exists('note', $_POST)) { 
    $_POST['note'] = trim($_POST['note']); //added this line 
    $note = filter_var($_POST['note'], FILTER_SANITIZE_SPECIAL_CHARS); 
    ftruncate($fichier, 0); 
    fseek($fichier, 0); 
    fputs($fichier, $note); 
    $updateMessage = 'Vos notes ont été sauvegardés!'; 

} else { 

    $note = ''; 

    while ($ligne = fgets($fichier)) { 
     $note = $note . $ligne; 
    } 
} 
5

gli spazi viene dal vostro HTML:

<textarea id="textarea" name="note" rows="16" cols="50"> 
    <?= $note ?> 
</textarea> 

si dovrebbe utilizzare il seguente:

<textarea id="textarea" name="note" rows="16" cols="50"><?php echo $note ?></textarea> 
3

Questo sta accadendo a causa di spazi bianchi extra nel tag del file HTML:

<textarea id="textarea" name="note" rows="16" cols="50"> 
     <?= $note ?> 
    </textarea> 

Provare a fare come:

<textarea id="textarea" name="note" rows="16" cols="50"><?= $note ?></textarea>