PHP文本操作类


Posted in PHP onNovember 25, 2006
<?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;    
           }    
    
}   
?> 
PHP 相关文章推荐
PHP 如何向 MySQL 发送数据
Oct 09 PHP
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
Dec 16 PHP
PHP实现变色验证码实例
Jan 06 PHP
php+ajax实时输入自动搜索匹配的方法
Dec 26 PHP
PHP实现指定字段的多维数组排序函数分享
Mar 09 PHP
smarty模板引擎基础知识入门
Mar 30 PHP
详解Yii2 rules 的验证规则
Dec 02 PHP
thinkPHP5 ACL用户权限模块用法详解
May 10 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
Feb 10 PHP
php实现图片压缩处理
Sep 09 PHP
小偷PHP+Html+缓存
Nov 25 #PHP
怎么样可以把 phpinfo()屏蔽掉?
Nov 24 #PHP
如何使用PHP中的字符串函数
Nov 24 #PHP
PHP常用代码
Nov 23 #PHP
给初学PHP的5个入手程序
Nov 23 #PHP
PHP中的日期及时间
Nov 23 #PHP
文件系统基本操作类
Nov 23 #PHP
You might like
PHP实现的简单缓存类
2015/07/29 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
js GridView 实现自动计算操作代码
2009/03/25 Javascript
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
js实现精美的银灰色竖排折叠菜单
2015/05/16 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
echarts统计x轴区间的数值实例代码详解
2019/07/07 Javascript
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
python实现石头剪刀布程序
2021/01/20 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
Python中拆分字符串的操作方法
2019/07/23 Python
使用apiDoc实现python接口文档编写
2019/11/19 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
python 如何设置守护进程
2020/10/29 Python
python实现学生信息管理系统源码
2021/02/22 Python
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
美国羽绒床上用品第一品牌:Pacific Coast
2018/08/25 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
阿巴庭院:Abba Patio
2019/06/18 全球购物
中间件分为哪几类
2012/03/14 面试题
环保倡议书400字
2014/05/15 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
vue Element-ui表格实现树形结构表格
2021/06/07 Vue.js
springboot用户数据修改的详细实现
2022/04/06 Java/Android
Python使用pyecharts控件绘制图表
2022/06/05 Python