php 文本操作類執行個體代碼

來源:互聯網
上載者:User
這篇文章主要介紹了PHP實現的檔案操作類及檔案下載功能,結合執行個體形式分析了php針對檔案的讀、寫、建立及下載等功能實現技巧,需要的朋友可以參考下

<?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;               }        }   ?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.