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程序设计有所帮助。