[Hilfe] Bei einfachem Script wird eine Zeile zuviel gelöscht, aber warum?

bob in motion

Grünschnabel
Ich habe ein Problem mit einem einfachen Script.
Ich will ich mit einem Formular die zweite Zeile in meiner Datei (include.php) bearbeiten.
Ich habe jetzt folgende Dateien (mit Inhalt):

include.php

PHP:
<?php $datei = "
TEST
"?>

form.php

PHP:
<form name="form1" method="post" action="zeile2loeschen.php">
<input name="namederdatei" type="text" id="namederdatei">
<input name="neuertext" type="text" id="neuertext">
<input type="submit" name="Submit" value="Senden">
</form>

zeile2loeschen.php

PHP:
<?php 

$datei =  "$namederdatei"; 
$fp = fopen($datei,"rb"); 
$array = file($datei); 
$zeilen = count($array); 

$id = '1'; 
if ($zeilen == 0) 
{ 
    print 'Die angegebene Zeile ist nicht vorhanden'; 
} 
else 
{ 
    if ($zeilen <= $id) 
    { 
        print 'Die angegebene Zeile gibt es nicht'; 
    } 
    else 
    { 
        unset($array[$id]); 
        $neuschreiben = fopen($datei,"wb"); 
        fputs($neuschreiben,implode("$neuertext",$array)); 
        fclose($neuschreiben); 
        print 'Die angegebene Zeile '.$id.' wurde bearbeitet.'; 
    } 
} 
?>


Kurze Information:
Der Name der Datei "zeile2loeschen.php" hat nichts zu bedeuten,
sie heißt nur so, da die ursprüngliche Funktion NUR das löschen der zweiten Zeile war.


So, und jetzt zu meinem Problem:
Wenn ich die Datei "form.php" starte, und die gewünschten Daten eintrage:
1. Feld: "include.php" ---- 2. Feld: "MEIN NEUER TEXT"
wird tatsächlich die zweite Zeile durch den gewünschten Text ersetzt.
Nur sieht sie dann wie folgt aus:

PHP:
<?php $datei = "
MEIN NEUER TEXT" ?>

d.h. wenn ich die Datei jetzt ein zweites Mal bearbeite, löscht es mir auch das "?>"

ALSO:
Was kann ich bzw. muss ich machen damit die Datei bestehen bleibt und wirklich nur
die zweite Zeile bearbeitet wird, ohne die dritte Zeile in die zweite zu verschieben?
 
Entweder einen neuen Umbruch in der Datei einfügen, indem du ein \n oder \r\n ausgibst, oder den Inhalt der ganzen Datei jedes mal neu zusammensetzen.

PS: Du weisst schon, dass der erste Array-Index, den numerischen Index 0 hat und nicht 1, oder?
 
1 = Zeile 2, Zeile 0 wäre Zeile 1

Wo muss dann eigendlich das /n im Script stehen, so dass es anschließend nicht im Text enthalten ist? Ich will einfach NUR die zweite Zeile bearbeiten.
 
Zurück