欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

一个不错的文本文件操作的php类

程序员文章站 2022-05-07 20:45:44
...

无详细内容 无 ?phpclass 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) { $

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;$iindex;$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;$iindex;$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;$ifile,"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;$ifile,"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;$iopenfile();  
			$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; 
		} 
?>