php删除文本文件中重复行的方法
本文实例讲述了php删除文本文件中重复行的方法。分享给大家供大家参考。具体分析如下:
这个php函数用来删除文件中的重复行,还可以指定是否忽略大小写,和指定换行符
/** *RemoveDuplicatedLines *Thisfunctionremovesallduplicatedlinesofthegiventextfile. * *@paramstring *@parambool *@returnstring */ functionRemoveDuplicatedLines($Filepath,$IgnoreCase=false,$NewLine="\n"){ if(!file_exists($Filepath)){ $ErrorMsg='RemoveDuplicatedLineserror:'; $ErrorMsg.='Thegivenfile'.$Filepath.'doesnotexist!'; die($ErrorMsg); } $Content=file_get_contents($Filepath); $Content=RemoveDuplicatedLinesByString($Content,$IgnoreCase,$NewLine); //Isthefilewriteable? if(!is_writeable($Filepath)){ $ErrorMsg='RemoveDuplicatedLineserror:'; $ErrorMsg.='Thegivenfile'.$Filepath.'isnotwriteable!'; die($ErrorMsg); } //Writethenewfile $FileResource=fopen($Filepath,'w+'); fwrite($FileResource,$Content); fclose($FileResource); } /** *RemoveDuplicatedLinesByString *Thisfunctionremovesallduplicatedlinesofthegivenstring. * *@paramstring *@parambool *@returnstring */ functionRemoveDuplicatedLinesByString($Lines,$IgnoreCase=false,$NewLine="\n"){ if(is_array($Lines)) $Lines=implode($NewLine,$Lines); $Lines=explode($NewLine,$Lines); $LineArray=array(); $Duplicates=0; //Gotroughalllinesofthegivenfile for($Line=0;$Line<count($Lines);$Line++){ //Trimwhitespaceforthecurrentline $CurrentLine=trim($Lines[$Line]); //Skipemptylines if($CurrentLine=='') continue; //Usethelinecontentsasarraykey $LineKey=$CurrentLine; if($IgnoreCase) $LineKey=strtolower($LineKey); //Checkifthearraykeyalreadyexists, //ifnotadditotherwiseincreasethecounter if(!isset($LineArray[$LineKey])) $LineArray[$LineKey]=$CurrentLine; else $Duplicates++; } //Sortthearray asort($LineArray); //Returnhowmanylinesgotremoved returnimplode($NewLine,array_values($LineArray)); }
使用范例:
//Example1 //Removesallduplicatedlinesofthefiledefiniedinthefirstparameter. $RemovedLinesCount=RemoveDuplicatedLines('test.txt'); print"Removed$RemovedLinesCountduplicatelinesfromthetest.txtfile."; //Example2(Ignorecase) //Sameasabove,justignoresthelinecase. RemoveDuplicatedLines('test.txt',true); //Example3(Customnewlinecharacter) //Byusingthe3rdparameteryoucandefinewhichcharacter //shouldbeusedasnewlineindicator.Inthiscase //theexamplefilelookslike'foo;bar;foo;foo'andwill //bereplacedwith'foo;bar' RemoveDuplicatedLines('test.txt',false,';');
希望本文所述对大家的php程序设计有所帮助。