2016-06-28 15 views
6

Dla moich kursów PHP muszę stworzyć notatkę, która zaczyna się od przykładowego tekstu, kiedy edytuję go i klikam przycisk zapisu, tekst wewnątrz pliku jest edytowany i zapisywany. Więc jeśli odświeżam swoją stronę/otwieram plik bezpośrednio, mam nową treść edytowaną przez użytkownika.Nieoczekiwana przestrzeń na początku pliku

Działa, ale mam nieoczekiwane miejsce w moim pliku.

Jeśli mogę umieścić na pierwszy znak w pierwszym wierszu „przykładowy tekst”, nie zobaczymy „przykładowy tekst”, ale w zamian:

 sample text 

I to tylko na pierwszej linii , jeśli kiedykolwiek edytowałem plik ręcznie lub na mojej stronie. Wszystkie następne linie zaczynają się od pierwszych znaków.

Poniżej mój plik notes.txt (gdzie moje notatki są) po dokonaniu edycji ze strony internetowej:

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

ja nie widzę żadnego dziwny znak w na początku pliku.

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

A moja 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> 

używam vim i PHP5.

Powiedz, czy potrzebujesz więcej informacji.

Odpowiedz

1

Albo zaktualizować HTML:

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

lub w skrypcie 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

spacje pochodzi z HTML:

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

Należy użyć następujących:

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

Dzieje się tak z powodu dodatkowych spacji w tagu z pliku HTML:

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

Spróbuj zrobić:

<textarea id="textarea" name="note" rows="16" cols="50"><?= $note ?></textarea> 
Powiązane problemy