18.13.1 Problem
You want to read delimited text fields from a file. You
might, for example, have a database program that prints records one per line,
with tabs between each field in the record, and you want to parse this data into
an array.
18.13.2 Solution
Read in each line and then split the fields based on their
delimiter:
$delim = '|';
$fh = fopen('books.txt','r') or die("can't open: $php_errormsg");
while (! feof($fh)) {
$s = rtrim(fgets($fh,1024));
$fields = explode($delim,$s);
// ... do something with the data ...
}
fclose($fh) or die("can't close: $php_errormsg");
18.13.3 Discussion
To parse the following data in books.txt:
Elmer Gantry|Sinclair Lewis|1927 The Scarlatti Inheritance|Robert Ludlum|1971 The Parsifal Mosaic|Robert Ludlum|1982 Sophie's Choice|William Styron|1979
Process each record like this:
$fh = fopen('books.txt','r') or die("can't open: $php_errormsg");
while (! feof($fh)) {
$s = rtrim(fgets($fh,1024));
list($title,$author,$publication_year) = explode('|',$s);
// ... do something with the data ...
}
fclose($fh) or die("can't close: $php_errormsg");