php文本文件操作,PHP文本操作类

复制代码 代码如下:<?php

classCtbClass{

var$file;

var$index;

//建立一个文件并写入输入

functionnull_write($new)

{

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

flock($f,LOCK_EX);

fputs($f,$new);

fclose($f);

}

//添加数据记录到文件末端

functionadd_write($new){

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

flock($f,LOCK_EX);

fputs($f,$new);

fclose($f);

}

//配合readfile()的返回一起使用,把一行数据转换为一维数组

functionmake_array($line){

$array=explode("\x0E",$line);

return$array;

}

//把为一维数组转换一行数据

functionjoin_array($line){

$array=join("\x0E",$line);

return$array;

}

//返回数据文件的总行数

functiongetlines(){

$f=file($this->file);

returncount($f);

}

//返回下一行的数据记录(备用)

functionnext_line(){

$this->index=$this->index++;

return$this->get();

}

//返回上一行的数据记录(备用)

functionprev_line(){

$this->index=$this->index--;

return$this->get();

}

//返回当前行的数据记录数据较小

functionget(){

$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;

}

//返回当前行的数据记录数据较大

functionget_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;

}

//打开数据文件---以一维数组返回文件内容

functionread_file(){

if(file_exists($this->file)){

$line=file($this->file);

}

return$line;

}

//打开数据文件---以二维数组返回文件内容

functionopenFile(){

if(file_exists($this->file)){

$f=file($this->file);

$lines=array();

foreach($fas$rawline){

$tmpline=explode("\x0E",$rawline);

array_push($lines,$tmpline);

}

}

return$lines;

}

//传入一个数组,合并成一行数据,重写整个文件

functionoverwrite($array){

$newline=implode("\x0E",$array);

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

flock($f,LOCK_EX);

fputs($f,$newline);

fclose($f);

}

//添加一行数据记录到文件末端

functionadd_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);

}

//插入一行数据记录到文件最前面

functioninsert_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);

}

//更新所有符合条件的数据记录,适用于每行字节数据较大的情况

functionupdate($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

$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);

}

//更新所有符合条件的数据记录,适用于每行字节数据较小的情况

functionupdate2($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);

}

//删除所有符合条件的数据记录,适用于每行字节数据较大的情况

functiondelete($column,$query_string){

$newfile="";

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

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

flock($f,LOCK_SH);

for($i=0;$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);

}

//删除所有符合条件的数据记录,适用于每行字节数据较小的情况

functiondelete2($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);

}

//取得一个文件里某个字段的最大值

functionget_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进行查询,以二维数组返回所有符合条件的数据

functionselect($column,$query_string){

$tline=$this->openfile();

$lines=array();

foreach($tlineas$line){

if($line[$column]==$query_string){

array_push($lines,$line);

}

}

return$lines;

}

//功能与functionselect()一样,速度可能略有提升

functionselect2($column,$query_string){

if(file_exists($this->file)){

$tline=$this->read_file();

foreach($tlineas$tmpLine){

$line=$this->make_array($tmpLine);

if($line[$column]==$query_string){

$lines[]=$tmpLine;

}

}

}

return$lines;

}

//根据数据文件的某个字段是否包含$query_string进行查询,以一维数组返回第一个符合条件的数据

functionselect_line($column,$query_string){

$tline=$this->read_file();

foreach($tlineas$tmpLine){

$line=$this->make_array($tmpLine);

if($line[$column]==$query_string){

return$line;

break;

}

}

}

//selectnext/prevline(next_prev==>1/next,2/prev)bycx

functionselect_next_prev_line($column,$query_string,$next_prev){

$tline=$this->read_file();

$line_key_end=count($tline)-1;

$line_key=-1;

foreach($tlineas$tmpLine){

$line_key++;

$line=$this->make_array($tmpLine);

if($next_prev==1){//next?

if($line[$column]==$query_string){

if($line_key==0){

return0;

}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){

return0;

}else{

$line_key_down=$line_key+1;

break;

}

}

}else{

return0;

}

}

$down_line=$this->make_array($tline[$line_key_down]);

return$down_line;

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值