Maison  >  Article  >  php教程  >  一个不错的文本文件操作的php类

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

WBOY
WBOYoriginal
2016-06-06 19:34:421060parcourir

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

<?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)  { 
		$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; 
		} 
?>
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:php提取osc最近发动弹的人Article suivant:遍历关联数组