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程序设计有所帮助。
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短