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 相关文章推荐
example2.php
Oct 09 PHP
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
php 高性能书写
Dec 11 PHP
PHP数据集构建JSON格式及新数组的方法
Nov 07 PHP
基于php验证码函数的使用示例
May 03 PHP
PHP四大安全策略
Mar 12 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
Oct 14 PHP
php实现用于删除整个目录的递归函数
Mar 16 PHP
php将字符串全部转换成大写或者小写的方法
Mar 17 PHP
纯PHP代码实现支付宝批量付款
Dec 24 PHP
PHP模块化安装教程
Jun 01 PHP
PHP生成图片缩略图类示例
Jan 12 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在线生成二维码代码(google api)
2013/06/03 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
PHP使用PDO 连接与连接管理操作实例分析
2020/04/21 PHP
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
JavaScript的MVVM库Vue.js入门学习笔记
2016/05/03 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
图文详解WinPE下安装Python
2016/05/17 Python
matplotlib给子图添加图例的方法
2018/08/03 Python
python实现ID3决策树算法
2018/08/29 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
Django choices下拉列表绑定实例
2020/03/13 Python
解决c++调用python中文乱码问题
2020/07/29 Python
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
求职简历自荐信范文
2013/10/21 职场文书
快餐公司创业计划书
2014/04/29 职场文书
国庆节演讲稿
2014/05/27 职场文书
初三数学教学反思
2016/02/17 职场文书