/** * Retrieve the lines from the end of the file. (from the last line); * @param * @return */ function _tail($filename, $num = 1, $return_type = 'str') { $lineArr = array(); if (file_exists($filename)) { $line_count = 0; $fp = fopen($filename, "r"); fseek($fp, 0, SEEK_END); $seek_count = ftell($fp); while ($seek_count >= 0 && $line_count < $num) { $char = fgetc($fp); if (ord($char) == 10 || $seek_count == 0) { if ($seek_count == 0) { $seek_count--; } fseek($fp, $seek_count + 1, SEEK_SET); $lineArr[] = fgets($fp); } $seek_count--; fseek($fp, $seek_count, SEEK_SET); } fclose($fp); } return $lineArr; } /** * Retrieve the characters backward from a file. * @param $return_type: can be either "str" or "arr" * @return */ function _tail_v2($filename, $num = 1, $return_type = 'str') { $lineArr = array(); if (file_exists($filename)) { $line = NULL; $line_count = 0; $fp = fopen($filename, "r"); fseek($fp, 0, SEEK_END); $seek_count = ftell($fp); while ($seek_count >= 0 && $line_count < $num) { $char = fgetc($fp); $seek_count--; fseek($fp, $seek_count, SEEK_SET); if (ord($char) == 13) { continue; } $line .= $char; if (ord($char) == 10 || $seek_count == -1) { if ($return_type === 'arr') { $lineArr[] = $line; $line = ''; } $line_count++; } } fclose($fp); } return $return_type === 'str' ? $line : $lineArr; }
Tuesday, November 24, 2009
Retrieve the lines from the end of the file. (from the last line)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment