PX : code

PHP File function extentions by Sergei Keler
Download this code


<?php

  
if (!$grep_inc) :
  
$grep_inc=1;
  
  
//echo "grep<br>";
  // Same as unix grep
  // Return 1 string not array
  
function grepFileFirst($file,$regex) {
    
$hdl=fopen($file,'r');
    if (
$hdl) {
      while (!
feof($hdl)) {
        
$line=ereg_replace("\n\$",'',(fgets($hdl,2048)));
        if (
ereg($regex,$line)) return $line;
      }
      
fclose($hdl);
    }
    return 
'';
  }

  
// Same as unix tail
  // returns array of strings w/o \n
  
function tail($file,$num) {
    global 
$tail_start_buf;     // Global: max string length
    
global $tail_record_lenght// Global: approximate string length
    
if ($tail_start_buf==0$tail_start_buf=80;
    if (
$tail_record_lenght==0$tail_record_lenght=4096;
    
$appxlen=$tail_start_buf;// approximate string length
    
$flen=filesize($file);   // file length
    
$out=array();            // $out is array to return
    
$fp=@fopen($file,'r');
    if (
$fp) {
      
// Откуда читать?
      
do {
        if (
$num*$appxlen>$flen$pos=0;
        else 
$pos=$flen-($num*$appxlen);
        
$out=_readfile($fp,$pos,$num);
        
$appxlen*=2;
      } while (
count($out)!=$num && $pos!=0);
      
// Все.
      
fclose($fp);
    }
    return 
$out;
  }
  
// Internal function for tail()
  
function _readfile($fp,$pos,$num) {
    global 
$tail_record_lenght;
    
fseek($fp,$pos);
    
$tmp=array();
    for (
$i=0; !feof($fp); $i++) {
      
$line=chop(fgets($fp,$tail_record_lenght));
      if (!
$line) break;
      
$tmp[$i]=$line;
    }
    
$j=count($tmp)-$num;
    if (
$pos!=&& $j==0) {
      
$j++;
    }
    if (
$j<0) {
      
$j=0;
      
$xnum=$num-1;
    } else 
$xnum=$num;
    for (
$i=0$i<$xnum && $j<count($tmp); $i++,$j++) $out[$i]=$tmp[$j];
    return 
$out;
  }

  endif;

?>

Comments or questions?
PX is running PHP 5.2.17
Thanks to Miranda Productions for hosting and bandwidth.
Use of any code from PX is at your own risk.