note 107727 added to book.dbase
| From: | Stephan | Date: | Wed, 29 Feb 2012 16:27:54 +0000 |
| Subject: | note 107727 added to book.dbase | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-186428@lists.php.net to get a copy of this message | ||
Thank you Erich, this really helped me.
To skip deleted records I use this modified (see /**/) version:
<?php
function echo_dbf($dbfname) {
$fdbf = fopen($dbfname,'r');
$fields = array();
$buf = fread($fdbf,32);
$header=unpack( "VRecordCount/vFirstRecord/vRecordLength", substr($buf,4,8));
echo 'Header: '.json_encode($header).'<br/>';
$goon = true;
/**/$unpackString='A1DeletionFlag/';
while ($goon && !feof($fdbf)) { // read fields:
$buf = fread($fdbf,32);
if (substr($buf,0,1)==chr(13)) {$goon=false;} // end of field list
else {
$field=unpack( "a11fieldname/A1fieldtype/Voffset/Cfieldlen/Cfielddec",
substr($buf,0,18));
echo 'Field: '.json_encode($field).'<br/>';
$unpackString.="A$field[fieldlen]$field[fieldname]/";
array_push($fields, $field);}}
/**/fseek($fdbf, $header['FirstRecord']); // move back to the start of the first record
(after the field definitions)
for ($i=1; $i<=$header['RecordCount']; $i++) {
$buf = fread($fdbf,$header['RecordLength']);
$record=unpack($unpackString,$buf);
/**/ if ($record['DeletionFlag'] == '*') continue;
echo 'record: '.json_encode($record).'<br/>';
echo $i.$buf.'<br/>';} //raw record
fclose($fdbf); }
?>
----
Server IP: 69.147.83.197
Probable Submitter: 88.79.195.12
----
Manual Page -- http://www.php.net/manual/en/book.dbase.php
Edit -- https://master.php.net/note/edit/107727
Del: integrated -- https://master.php.net/note/delete/107727/integrated
Del: useless -- https://master.php.net/note/delete/107727/useless
Del: bad code -- https://master.php.net/note/delete/107727/bad+code
Del: spam -- https://master.php.net/note/delete/107727/spam
Del: non-english -- https://master.php.net/note/delete/107727/non-english
Del: in docs -- https://master.php.net/note/delete/107727/in+docs
Del: other reasons-- https://master.php.net/note/delete/107727
Reject -- https://master.php.net/note/reject/107727
Search -- https://master.php.net/manage/user-notes.php