Hallo
Eine Frage hätte ich dann doch noch - zu dem von dir geposteten PHP-Schnippsel. ;)
$i = 0;
while (is_file($filename.$i)) {
$i++;
}file_put_contents($filename.$i.'.txt',$content);
>
> Der Sinn dieses Abschnitts erschließt sich mir nicht wirklich. Das sorgt in der geübten Praxis dafür, dass an den Dateinamen, den ich der Variable `(filename)`{:.language-javascript} in der vorgeschalteten JavaScript-Funktion mit auf den Weg gebe, eine `0`{:.language-javascript} drangehängt wird;
Nein. Die Bedingung in while prüft, ob es Dateinamen nach dem Schema „Inhalt der Variable `$filename`{:.language-php} gefolgt von einer oder mehreren Ziffern“ gibt. Wenn ja, dass wird `$i`{:.language-php} hochgezählt und erneut geprüft ob es eine Datei nach der formulierten Bedingung gibt.
> Führe ich die Funktion mit der selben Variablen für `(filename)`{:.language-javascript} jedoch mehrmals aus, wird mitnichten jedesmal eine neue Datei angelegt mit ansteigender Zahl am Ende des Dateinamens, sondern es bleibt bei `filename0`{:.language-javascript} - nur das der Inhalt der Datei bei jedem Funktionsaufruf neu überschrieben wird!
Klar, mit [file_put_contents](http://www.php.net/file_put_contents) wird der spezifizierte Inhalt in die spezifizierte Datei geschrieben. Wenn da immer der selbe Namen drin steht, wird auch immer die selbe Datei befüllt.
> Wenn aber nun bei gleichbleibendem Variablenwert für `(filename)`{:.language-javascript} ohnehin immer nur der Inhalt der bestehenden Datei überschrieben wird, - warum dann überhaupt eine `0`{:.language-javascript} an den Dateinamen dranhängen???
Was passieren soll, ist vermutlich, dass für die ersten übergebenen Daten `$filename."0.txt"`{:.language-php} erzeugt und beschrieben wird. Beim nächsten Aufruf wird der selbe Dateiname erzeugt, dann geprüft, ob es im Dateisystem bereits eine Datei mit dem Namen `$filename."0.txt"`{:.language-php} gibt. Gibt es die, wird ja $i um 1 hochgezählt und der neu übergebene Inhalt in `$filename."1.txt"`{:.language-php} geschrieben. Der nächste Aufruf soll `$filename."2.txt"`{:.language-php} erzeugen und so weiter und so fort.
`is_file($filename.$i)`{:.language-php} und `file_put_contents($filename.$i.'.txt',$content)`{:.language-php} sprechen aber unterschiedliche Dateinamen an. Bei is\_file fehlt die Dateiendung. Die Prüfung auf den Namen `$filename.$i.'.txt'`{:.language-php} schlägt mit `$filename.$i`{:.language-php} halt nie an, womit der Zähler `$i`{:.language-php} brav bei „0“ bleibt.
> PS: Ich nehme an, es gibt auch in PHP keinen Befehl, der in der Ausgabedatei einen Zeilenumbruch à la `<br>`{:.language-html} erzeugt, oder?
Wenn da schon ein Zeilenumbruch da ist, kann man den mit [nl2br](http://www.php.net/nl2br) auch für HTML aufpeppen.
Tschö, Auge
--
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
Terry Pratchett, "Wachen! Wachen!"
ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
[Veranstaltungsdatenbank Vdb 0.3](http://termindbase.auge8472.de/)