Datei verändern
Datei Inhalt als String
PHP 4.3
file_get_contents()
So verändere ich eine bestehende Datei: file_get_contents() holt den ganzen Inhalt einer Datei als String in eine Variable (ohne include oder fopen). Aus der Variablen kann z.B. durch Unterteilung ein Array erstellt werden, das wiederum erlaubt einzelne Teile daraus zu manipulieren. Zum Schluss wird die Datei mit dem veränderten Array überschrieben.
<?php
$contents=file_get_contents("datei_content_raw1.txt");
echo $contents;
?>
|Hier noch ein paar 'whitespaces': 5 Tabs 10 Leerschläge |.
Datei Inhalt als Zeilen-Array
Mit implode() zum String, vor PHP 4.3
file(), implode()
Durch diesen Umweg erreichte man früher das selbe Resultat: zuerst wird die Datei mit file() in einen Array eingelesen, wobei eine Zeile einen Arrayeintrag erzeugt. Dann wird der Array mit implode() zu einem String aufgelöst.
<?php
$farray=file("datei_content_raw1.txt");
$inhalt=implode($farray);
echo $inhalt;
?>
|Hier noch ein paar 'whitespaces': 5 Tabs 10 Leerschläge |.
Mit explode() zu weiteren Unterteilungen
file(), explode()
<?php
$zeilen=file("datei_content_raw2.txt");
// solange $i -das ist die aktuelle Zeile- Null
// und kleiner als die Gesamtzeilenzahl ist,
// zähle fortlaufend 1 dazu
for($i=0;$i<count($zeilen);$i++) {
// unterteile mit | als Trennzeichen die aktuelle Zeile
// und fasse das in den Array 'inhalt'
$inhalt=explode("|",$zeilen[$i]);
// schreibe HTML-Code, entferne whitespaces,
// schreibe den String nach dem 2. |, schreibe HTML-Code,
// schreibe den String nach dem 1. |, schreibe HTML-Code,
print "<a href=\"".trim($inhalt[2])."\">".$inhalt[1]."</a><br />\n";
// die Schleife beginnt wieder bei 'for', bis alle Zeilen durchgearbeitet sind
}
?>
String als Datei Inhalt
Nur Code Beispiel, ab PHP 5
file_put_contents();
Diese Funktion ist identisch mit der Folge der drei Funktionen fopen(), fwrite() und fclose() um Daten in eine Datei zu schreiben. Falls die Datei nicht existiert, wird sie erstellt, sonst wird die Datei überschrieben, es sei denn, die Flag FILE_APPEND wurde gesetzt, dann wird am Ende angefügt.
<?php
file_put_contents("datei_content_fill.txt","Ich überschreibe eine Datei. ");
file_put_contents("datei_content_fill.txt","Ich hänge einen String ans Ende. ", FILE_APPEND | LOCK_EX);
?>
Teile einer Datei überschreiben
Eine Datei vollständig überschreiben, oder am Anfang bzw. Ende etwas hinzufügen kann ich auch mit fwrite(); oder fputs();. Eine Datei bearbeiten ist aber nur indirekt möglich: Zuerst lese ich die Datei in eine Variable ein, die Variable wird dann manipuliert, dann schreibe ich die Variable in die Datei zurück, ich überschreibe also die ganze Datei vollständig.
<?php
// Datei in Variable lesen
$content=file_get_contents("$fileName");
// suchen und ersetzen in der Variablen
$content=str_replace($alt,$neu,$content);
// Datei vollständig mit der Variablen überschreiben
file_put_contents("$fileName", $content);
?>