PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP基础 >> 基础文章 >> 

PHP文本操作类

PHP文本操作类

来源:互联网  作者:未知  发布时间:2008-01-13
以下为引用的内容: ? php class CtbClass { var $fi
以下为引用的内容:
<?php
class CtbClass 
{     
    
                 var     
$file
;             
                 var     
$index
;         
    
         
//建立一个文件并写入输入     
                 
function     null_write($new
)     
                 {     
                                 
$f=fopen($this->file,"w"
);             


                                 
flock($f,LOCK_EX
);     
                                 
fputs($f,$new
);             
                                 
fclose($f
);     


                 }     
                 
//     添加数据记录到文件末端     
                 
function     add_write($new
)     {                 
                                 
$f=fopen($this->file,"a"
);             
                                 
flock($f,LOCK_EX
);     
                                 
fputs($f,$new
);                 
                                 
fclose($f
);     
                 }     
                 
//     配合readfile()的返回一起使用,把一行数据转换为一维数组     
                 
function     make_array($line
)     {     
                                 
$array     =     explode("\x0E",$line
);     
                                 return     
$array
;     
                 }     
                 
                 
//把为一维数组转换一行数据     
                 
function     join_array($line
)     {     


                                 
$array     =     join("\x0E",$line
);     
                                 return     
$array
;     
                 }     
                 
//     返回数据文件的总行数     
                 
function     getlines
()     {     
                                 
$f=file($this->file
);             

                                 return     
count($f
);             
                 }     
                 
//     返回下一行的数据记录(备用)     
                 
function     next_line
()     {     
                                 
$this->index=$this->index
++;             
                                 return     
$this->get
();             

                 }     
    
                 
//     返回上一行的数据记录(备用)     
                 
function     prev_line
()     {     
                                 
$this->index=$this->index
--;             

                                 return     
$this->get
();             
                 }         
                 
//     返回当前行的数据记录数据较小     
                 
function     get
()     {     

                                 
$f=fopen($this->file,"r"
);             
                                 
flock($f,LOCK_SH
);     
                                 for(
$i=0;$i<=$this->index;$i
++)     {     
                                                 
$rec=fgets($f,1024
);             
                                 }     
                                 
$line=explode("\x0E",$rec
);     
                                 
fclose($f
);     

                                 return     
$line
;             
                 }         
                 
//     返回当前行的数据记录数据较大     
                 
function     get_big_file
()     {     
                                 
$f=fopen($this->file,"r"
);             
                                 
flock($f,LOCK_SH
);     
                                 for(
$i=0;$i<=$this->index;$i
++)     {     
                                                 
$rec=fgets($f,1024*5
);             
                                 }     
                                 
$line=explode("\x0E",$rec
);     
                                 
fclose($f
);     


                                 return     
$line
;             
                 }         
                 
//     打开数据文件---以一维数组返回文件内容     
                 
function     read_file
()     {     


                                 if (
file_exists($this->file
))
                                  {     
                                     
$line     =file($this->file
);     
                                 }     
                                 return  
$line
;     
                 }     
                 
//     打开数据文件---以二维数组返回文件内容     
                 
function     openFile
()     {     
                                 if     (
file_exists($this->file
))     {     
                                                 
$f     =file($this->file
);     

                                                 
$lines     
=     array();     
                                                 foreach     (
$f     as     $rawline
)     {     
                                                                 
$tmpline     =     explode("\x0E",$rawline
);     
                                                                 
array_push($lines,     $tmpline
);     


                                                 }     
                                 }     
                                 return     
$lines
;     
                 }     
                 
//     传入一个数组,合并成一行数据,重写整个文件     
                 
function     overwrite($array
){     
                                 
$newline     =     implode("\x0E",$array
);                     
                                 
$f     =     fopen($this->file,"w"
);     
                                 
flock($f,LOCK_EX
);     
                                 
fputs($f,$newline
);     
                                 
fclose($f
);     
                 }     
         


                 
//     添加一行数据记录到文件末端     
                 
function     add_line($array,$check_n=1
)     {         
                                 
$s=implode("\x0E",$array
);             


                                 
$f=fopen($this->file,"a"
);             
                                 
flock($f,LOCK_EX
);     

                                 
fputs($f,$s
);             
                                 if     (
$check_n==1)     fputs($f,"\n"
);             
                                 
fclose($f
);     
                 }             
    
                 
//     插入一行数据记录到文件最前面     
                 
function     insert_line($array
)     {     
                                 
$newfile     =     implode("\x0E",$array
);     
                                 
$f     =     fopen($this->file,"r"
);     

                                 
flock($f,LOCK_SH
);     
                                 while     (
$line     =     fgets($f,1024
))     {     
                                                 
$newfile     .=     $line
;     
                                 }     
                                 
fclose($f
);     

                                 
$f     =     fopen($this->file,"w"
);     
                                 
flock($f,LOCK_EX
);     


                                 
fputs($f,$newfile
);     
                                 
fclose($f
);     
                 }     
    
                 
//     更新所有符合条件的数据记录,适用于每行字节数据较大的情况     
                 
function     update($column,$query_string,$update_array
)     {     
                                 
$update_string     =     implode("\x0E",$update_array
);             


                                 
$newfile     =     ""
;                     
                                 
$fc=file($this->file
);     


                                 
$f=fopen($this->file,"r"
);     
                                 
flock($f,LOCK_SH
);     
                                 for     (
$i=0;$i<count($fc);$i
++)     {     
                                                 
$list     =     explode("\x0E",$fc[$i
]);     
                                                 if     (
$list[$column]     !=     $query_string
)     {     
                                                                 
$newfile     =     $newfile.chop($fc[$i])."\n"
;     


                                                 }     else     {     
                                                                 
$newfile     =     $newfile.$update_string
;     

                                                 }     
                                 }     
                                 
fclose($f
);     
                                 
$f=fopen($this->file,"w"
);     


                                 
flock($f,LOCK_EX
);     
                                 
fputs($f,$newfile
);     
                                 
fclose($f
);     
                 }     
    
                 
//     更新所有符合条件的数据记录,适用于每行字节数据较小的情况     
                 
function     update2($column,$query_string,$update_array
)     {     
                                 
$newline     =     implode("\x0E",$update_array
);             
                                 
$newfile     =     ""
;     
                                 
$f     =     fopen($this->file,"r"
);     
                                 
flock($f,LOCK_SH
);     
                                 while     (
$line     =     fgets($f,1024
))     {     
                                                 
$tmpLine     =     explode("\x0E",$line
);     
                                                 if     (
$tmpLine[$column]     ==     $query_string
)     {     

                                                                 
$newfile     .=     $newline
;     
                                                 }     else     {     

                                                                 
$newfile     .=     $line
;     
                                                 }     
                                 }     
                                 
fclose($f
);     
                                 
$f     =     fopen($this->file,"w"
);     

                                 
flock($f,LOCK_EX
);     
                                 
fputs($f,$newfile
);     
                                 
fclose($f
);     


                 }     
    
                 
//     删除所有符合条件的数据记录,适用于每行字节数据较大的情况     
                 
function     delete($column,$query_string
)     {     
                                 
$newfile     =     ""
;                     


                                 
$fc=file($this->file
);     
                                 
$f=fopen($this->file,"r"
);     


                                 
flock($f,LOCK_SH
);     
                                 for     (
$i=0;$i<count($fc);$i
++)     {     
                                                 
$list     =     explode("\x0E",$fc[$i
]);     
                                                 if     (
$list[$column]     !=     $query_string
)     {     

                                                                 
$newfile     =     $newfile.chop($fc[$i])."\n"
;     
                                                 }     
                                 }     
                                 
fclose($f
);     
                                 
$f=fopen($this->file,"w"
);     

                                 
flock($f,LOCK_EX
);     
                                 
fputs($f,$newfile
);     
                                 
fclose($f
);     

                 }             
    
                 
//     删除所有符合条件的数据记录,适用于每行字节数据较小的情况     
                 
function     delete2($column,$query_string
){         
                                 
$newfile     =     ""
;     

                                 
$f     =     fopen($this->file,"r"
);     
                                 
flock($f,LOCK_SH
);     


                                 while     (
$line     =     fgets($f,1024
))     {     
                                                 
$tmpLine     =     explode("\x0E",$line
);     

                                                 if     (
$tmpLine[$column]     !=     $query_string
)     {     
                                                                 
$newfile     .=     $line
;     


                                                 }     
                                 }     
                                 
fclose($f
);     
                                 
$f     =     fopen($this->file,"w"
);     
                                 
flock($f,LOCK_EX
);     
                                 
fputs($f,$newfile
);     
                                 
fclose($f
);     
                 }     
    
         
//取得一个文件里某个字段的最大值     
                 
function     get_max_value($column
)     {     
                                 
$tlines     =     file($this->file
);     


                                 for     (
$i=0;$i<=count($tlines);$i
++)     {     
                                                 
$line=explode("\x0E",$tlines[$i
]);     
                                                 
$get_value[]=$line[$column
];     
                                 }     
                     
$get_max_value     =     max($get_value
);     
                                 return     
$get_max_value
;     
                 }     
    
    
                 
//     根据数据文件的某个字段是否包含$query_string进行查询,以二维数组返回所有符合条件的数据     
                 
function     select($column,     $query_string
)     {     


                                 
$tline     =     $this->openfile
();     
                                 
$lines     
=     array();     
                                 foreach     (
$tline     as     $line
)     {     

                                                 if     (
$line[$column]     ==     $query_string
)     {     
                                                                 
array_push($lines,     $line
);     


                                                 }     
                                 }     
    
                                 return     
$lines
;     
                 }     
    
                 
//     功能与function     select()一样,速度可能略有提升     
                 
function     select2($column,     $query_string
)     {     
                                 if     (
file_exists($this->file
))     {     


                                                 
$tline     =     $this->read_file
();     
                                                 foreach     (
$tline     as     $tmpLine
)     {     
                                                                 
$line     =     $this->make_array($tmpLine
);     
                                                                 if     (
$line[$column]     ==     $query_string
)     {     


                                                                                 
$lines[]=$tmpLine
;     
                                                                 }     
                                                 }     
                                 }     
    
                                 return     
$lines
;     
                 }     
    
                 
//     根据数据文件的某个字段是否包含$query_string进行查询,以一维数组返回第一个符合条件的数据     
                 
function     select_line($column,     $query_string
)     {     
                                 
$tline     =     $this->read_file
();     


                                 foreach     (
$tline     as     $tmpLine
)     {     
                                                 
$line     =     $this->make_array($tmpLine
);     
                                                 if     (
$line[$column]     ==     $query_string
)     {     
                                                     return     
$line
;     

                                                                 break;     
                                                 }     
                                 }     
                 }     


                 
//     select     next/prev     line(next_prev     ==>     1/next,     2/prev)     by     cx     
                 
function     select_next_prev_line($column,     $query_string,     $next_prev
)     {     
                                 
$tline     =     $this->read_file
();     
                                 
$line_key_end     =     count($tline)     -     1
;     

                                 
$line_key     =     -1
;     
                                 foreach     (
$tline     as     $tmpLine
)     {     
                                                 
$line_key
++;     
                                                 
$line     =     $this->make_array($tmpLine
);     
                                                 if     (
$next_prev     ==     1)     {     
//     next?     
                                                                 
if     ($line[$column]     ==     $query_string
)     {     
                                                                                 if     (
$line_key     ==     0
)     {     
                                                                                                 return     
0
;     
                                                                                 }     else     {     


                                                                                                 
$line_key_up     =     $line_key     -     1
;     
                                                                                                 return     
$up_line
;     
                                                                                 }     
                                                                 }     else     {     
                                                                                 
$up_line     =     $line
;     

                                                                 }     
                                                 }     elseif     (
$next_prev     ==     2)     {     
//     prev?     
                                                                 
if     ($line[$column]     ==     $query_string
)     {     
                                                                                 if     (
$line_key     ==     $line_key_end
)     {     
                                                                                                 return     
0
;     
                                                                                 }     else     {     
                                                                                                 
$line_key_down     =     $line_key     +     1
;     
                                                                                                 break;     

                                                                                 }     
                                                                 }     
                                                 }     else     {     


                                                                 return     
0
;     
                                                 }     
                                 }     
                                 
$down_line     =     $this->make_array($tline[$line_key_down
]);     
                                 return     
$down_line
;     
                 }     
    
    
}
?>
Tags: function   数据   php     文本  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号