Tutorials
Lezen, schrijven, verwijderen
Bestanden leren lezen, schrijven en verwijderen middels PHP.
Pagina 1
Inleiding
In deze tutorial staat informatie over hoe we het gemakkelijkst naar een bestand kunnen schrijven, hoe we de inhoud kunnen bewerken, hoe we de inhoud kunnen lezen, en hoe we een bestand kunnen verwijderen.
Aanvullend zullen er links naar php.net aanwezig zijn!
Aanvullend zullen er links naar php.net aanwezig zijn!
Pagina 2
Schrijven
Als we gewoon in een bestand willen schrijven op onze PC, zullen we het bestand eerst moeten openen. In php is dit niets anders!
Een bestand openen kan met fopen() (file open). Fopen() heeft 2 parameters nodig. De eerste is welk bestand we willen openen. Voor PHP maakt het niet uit in welke map het bestand zich bevindt. De 2de parameter is "hoe" het bestand geopend moet worden. Bvb om te lezen, om te schrijven, of juist om beide. Hier wordt ook in meegegeven waar er geschreven moet worden, op het einde van het bestand, of juist in het begin van het bestand!
Hieronder alle modes een beetje uitgelegd:
r: Alleen lezen, vanaf het begin van het bestand.
r+: Lezen en schrijven, vanaf het begin van het bestand. (nieuwe tekst wordt ook vooraan toegevoegd!)
w: Alleen schrijven. Het bestand wordt verwijderd mits het bestaat. Als het niet bestaat wordt er een nieuw bestand aangemaakt.
w+: Lezen en schrijven. Het bestand wordt verwijderd mits het bestaat. Als het niet bestaat wordt er een nieuw bestand aangemaakt.
a: Alleen schrijven. Tekst wordt achteraan toegevoegd. Als het bestand niet bestaat wordt het aangemaakt.
a+: Alleen schrijven. Tekst wordt achteraan toegevoegd. Als het bestand niet bestaat wordt het aangemaakt.
Om naar een bestand te schrijven is het dus ideaal om de flag "a" te gebruiken.
Het eerste stukje code ziet er dan ongeveer zo uit:
Nu hebben we het bestand geopend om te schrijven, en gelinkt aan $fhandler (file handler). Om in het bestand te schrijven, gebruiken we nu fwrite().
Fwrite maakt ook weer gebruik van 2 parameters. De eerste is de file handler ($fhandler), en de 2de is de tekst die geschreven moet worden. In ons geval "test".
De code ziet er dan zo uit:
Om te controleren of een bestand wel schrijfbaar is, kunnen we gebruikmaken van is_readable($file). Deze functie geeft een true of een false waarde terug.
Nu, als we ons bestand open laten staan, gaan er een groot deel server recourses verloren. Omdat we nette en vriendelijke mensen zijn, gaan we het bestand ook nog eventjes sluiten. Dit kan met fclose($filehandler). De uiteindelijke code ziet er dan zo uit:
Een bestand openen kan met fopen() (file open). Fopen() heeft 2 parameters nodig. De eerste is welk bestand we willen openen. Voor PHP maakt het niet uit in welke map het bestand zich bevindt. De 2de parameter is "hoe" het bestand geopend moet worden. Bvb om te lezen, om te schrijven, of juist om beide. Hier wordt ook in meegegeven waar er geschreven moet worden, op het einde van het bestand, of juist in het begin van het bestand!
Hieronder alle modes een beetje uitgelegd:
r: Alleen lezen, vanaf het begin van het bestand.
r+: Lezen en schrijven, vanaf het begin van het bestand. (nieuwe tekst wordt ook vooraan toegevoegd!)
w: Alleen schrijven. Het bestand wordt verwijderd mits het bestaat. Als het niet bestaat wordt er een nieuw bestand aangemaakt.
w+: Lezen en schrijven. Het bestand wordt verwijderd mits het bestaat. Als het niet bestaat wordt er een nieuw bestand aangemaakt.
a: Alleen schrijven. Tekst wordt achteraan toegevoegd. Als het bestand niet bestaat wordt het aangemaakt.
a+: Alleen schrijven. Tekst wordt achteraan toegevoegd. Als het bestand niet bestaat wordt het aangemaakt.
Om naar een bestand te schrijven is het dus ideaal om de flag "a" te gebruiken.
Het eerste stukje code ziet er dan ongeveer zo uit:
<?php
$file = 'eenbestand.txt';
$fhandler = fopen($file, "a");
?>Nu hebben we het bestand geopend om te schrijven, en gelinkt aan $fhandler (file handler). Om in het bestand te schrijven, gebruiken we nu fwrite().
Fwrite maakt ook weer gebruik van 2 parameters. De eerste is de file handler ($fhandler), en de 2de is de tekst die geschreven moet worden. In ons geval "test".
De code ziet er dan zo uit:
<?php
$file = 'eenbestand.txt';
$content = 'test';
$fhandler = fopen($file, "a");
fwrite($fhandler, $content);
?>Om te controleren of een bestand wel schrijfbaar is, kunnen we gebruikmaken van is_readable($file). Deze functie geeft een true of een false waarde terug.
Nu, als we ons bestand open laten staan, gaan er een groot deel server recourses verloren. Omdat we nette en vriendelijke mensen zijn, gaan we het bestand ook nog eventjes sluiten. Dit kan met fclose($filehandler). De uiteindelijke code ziet er dan zo uit:
<?php
$file = 'eenbestand.txt';
$content = 'test';
$fhandler = fopen($file, "a");
fwrite($fhandler, $content);
fclose($fhandler);
?>Pagina 3
Lezen
Als we een bestand uitlezen, gebruiken we bij voorkeur blokken van 4KiB (let op de i!! 1kB = 1000B, 1KiB = 1024B!!!). 4KiB zijn dus 4096Bytes.
We gebruiken de functie fread() om te lezen. Hiervoor moeten we eerst ook weer een filehandler aanmaken, welke tevens de eerste parameter is. Bij de bestandsmode gebruiken we nu bij voorkeur r (ligt uiteraard aan de situatie). Op sommige systemen (zoals windows systemen) is het mogelijk dat bestanden van een ander type zijn (binair <-> tekst). In dat geval voegen we een b toe bij de bestandsmode (deze wordt dan "rb").
Aangezien we telkens 4KiB uitlezen, moeten we dit meerdere malen doen. We gaan dit niet statisch -hardcoded- doen, maar wel dynamisch, met een while-lus dus. Hiervoor gebruiken we feof() (file end of file).
De code om een bestand uit te lezen ziet er dan zo uit:
We gebruiken de functie fread() om te lezen. Hiervoor moeten we eerst ook weer een filehandler aanmaken, welke tevens de eerste parameter is. Bij de bestandsmode gebruiken we nu bij voorkeur r (ligt uiteraard aan de situatie). Op sommige systemen (zoals windows systemen) is het mogelijk dat bestanden van een ander type zijn (binair <-> tekst). In dat geval voegen we een b toe bij de bestandsmode (deze wordt dan "rb").
Aangezien we telkens 4KiB uitlezen, moeten we dit meerdere malen doen. We gaan dit niet statisch -hardcoded- doen, maar wel dynamisch, met een while-lus dus. Hiervoor gebruiken we feof() (file end of file).
De code om een bestand uit te lezen ziet er dan zo uit:
<?php
$file = 'filename.txt';
$fhandler = fopen($file, "r"); // of $fhandler = fopen($file, "rb");
$fileContents = NULL; // Zeker zijn dat de variabele leeg is, omdat hier content aan TOEGEVOEGD wordt.
while (!feof($fhandler))
$fileContents .= fread($fhandler, 4096); // 4KiB uitlezen. Let op het . voor het = teken. Content wordt TOEGEVOEGD aan de variabele, en dus niet vervangen!!!
fclose($fhandler); // Het bestand weer netjes afsluiten.
// $fileContents bevat nu de inhoud van het bestand in string-vorm
?>Pagina 4
Bewerken
Om een bestand te bewerken moet je het helaas helemaal uitlezen, en nadien terug wegschrijven (buiten in het geval dat je vooraan of achteraan tekst moet toevoegen).
Op deze pagina is overigens een overzicht van alle (bestandsysteem)functies in php te vinden:
http://be2.php.net/manual/nl/ref.filesystem.php
Op deze pagina is overigens een overzicht van alle (bestandsysteem)functies in php te vinden:
http://be2.php.net/manual/nl/ref.filesystem.php
Reacties
0