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 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
文章推荐系统(二)
Oct 09 PHP
PHP计数器的实现代码
Jun 08 PHP
深入array multisort排序原理的详解
Jun 18 PHP
使用PHP实现Mysql读写分离
Jun 28 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
PHP实现的一致性Hash算法详解【分布式算法】
Mar 31 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
Mar 24 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 PHP
PHP 出现 http500 错误的解决方法
Mar 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读取javascript设置的cookies的代码
2010/04/12 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
javascript EXCEL 操作类代码
2009/07/30 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
vuex的使用及持久化state的方式详解
2018/01/23 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
Python操作列表之List.insert()方法的使用
2015/05/20 Python
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
使用Tkinter制作信息提示框
2020/02/18 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
python logging模块的使用详解
2020/10/23 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
美国知名生活购物网站:Goop
2017/11/03 全球购物
丝芙兰加拿大官方网站:SEPHORA加拿大
2018/11/20 全球购物
传播学专业毕业生自荐信
2013/11/04 职场文书
安全生产月活动总结
2014/05/04 职场文书
战友聚会策划方案
2014/06/13 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
2015年机关党建工作总结
2015/05/22 职场文书
2016教师国培研修感言
2015/12/08 职场文书
pytorch 如何使用batch训练lstm网络
2021/05/28 Python
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js