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程序设计有所帮助。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下