2016-06-28 3 views
6

Для моих курсов PHP мне нужно создать блокнот, который начинается с образца текста, когда я его редактирую и нажимаю на кнопку сохранения, текст внутри файла редактируется и сохраняется. Поэтому, если я обновляю свою страницу/открываю файл напрямую, у меня есть новый контент, отредактированный отображаемым пользователем.Неожиданное пространство в начале файла

Работает, но у меня есть непредвиденное место в моем файле.

Если я ставлю на первый символ в первой строке «образец текста», я не буду видеть «образец текста», а вместо этого:

 sample text 

И это только для первой строки , что если я отредактировал файл вручную или с моей страницей. Все следующие строки начинаются с первых символов.

Ниже мой файл notes.txt (где мои заметки являются) после редактирования с веб-страницы:

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

Я не вижу какой-либо странный характер в начале файла.

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'; 
?> 

И мой 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> 

Я использую Vim и PHP5.

Сообщите мне, если вам нужна дополнительная информация.

ответ

1

Либо обновить HTML:

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

Или в вашем 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

пробельных исходит от вашего HTML:

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

Вы должны использовать следующее:

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

Это происходит из-за дополнительных пробелов в теге вашего HTML файла:

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

Попробуйте сделать так:

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