PHP文本操作类
PHP文本操作类
发布时间:2016-12-29 来源:查字典编辑
摘要:复制代码代码如下:

复制代码 代码如下:<?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<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);

}

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

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

}

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

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;

}

}

?>

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新php教程学习
热门php教程学习
编程开发子分类