php去除每行的重复文本,php删除文本文件中重复行的方法
本文實例講述了php刪除文本文件中重復行的方法。分享給大家供大家參考。具體分析如下:
這個php函數用來刪除文件中的重復行,還可以指定是否忽略大小寫,和指定換行符
?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465/**?* RemoveDuplicatedLines?* This function removes all duplicated lines of the given text file.?*?* @param?? string?* @param?? bool?* @return? string?*/function RemoveDuplicatedLines($Filepath, $IgnoreCase=false, $NewLine="\n"){??if (!file_exists($Filepath)){????$ErrorMsg = 'RemoveDuplicatedLines error: ';????$ErrorMsg .= 'The given file ' . $Filepath . ' does not exist!';????die($ErrorMsg);??}??$Content = file_get_contents($Filepath);??$Content = RemoveDuplicatedLinesByString($Content, $IgnoreCase, $NewLine);??// Is the file writeable???if (!is_writeable($Filepath)){????$ErrorMsg = 'RemoveDuplicatedLines error: ';????$ErrorMsg .= 'The given file ' . $Filepath . ' is not writeable!';? ????die($ErrorMsg);??}??// Write the new file??$FileResource = fopen($Filepath, 'w+');?? ??fwrite($FileResource, $Content);??? ??fclose($FileResource);? }??/**?* RemoveDuplicatedLinesByString?* This function removes all duplicated lines of the given string.?*?* @param?? string?* @param?? bool?* @return? string?*/function RemoveDuplicatedLinesByString($Lines, $IgnoreCase=false, $NewLine="\n"){??if (is_array($Lines))????$Lines = implode($NewLine, $Lines);??$Lines = explode($NewLine, $Lines);??$LineArray = array();??$Duplicates = 0;??// Go trough all lines of the given file??for ($Line=0; $Line < count($Lines); $Line++){????// Trim whitespace for the current line????$CurrentLine = trim($Lines[$Line]);????// Skip empty lines????if ($CurrentLine == '')??????continue;????// Use the line contents as array key????$LineKey = $CurrentLine;????if ($IgnoreCase)??????$LineKey = strtolower($LineKey);????// Check if the array key already exists,????// if not add it otherwise increase the counter????if (!isset($LineArray[$LineKey]))??????$LineArray[$LineKey] = $CurrentLine;??? ????else?????????????$Duplicates++;??}??// Sort the array??asort($LineArray);??// Return how many lines got removed??return implode($NewLine, array_values($LineArray));? }
使用范例:
?12345678910111213// Example 1// Removes all duplicated lines of the file definied in the first parameter.$RemovedLinesCount = RemoveDuplicatedLines('test.txt');print "Removed $RemovedLinesCount duplicate lines from the test.txt file.";// Example 2 (Ignore case)// Same as above, just ignores the line case.RemoveDuplicatedLines('test.txt', true);// Example 3 (Custom new line character)// By using the 3rd parameter you can define which character// should be used as new line indicator. In this case// the example file looks like 'foo;bar;foo;foo' and will// be replaced with 'foo;bar' RemoveDuplicatedLines('test.txt', false, ';');
希望本文所述對大家的php程序設計有所幫助。
小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!
免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!
總結
以上是生活随笔為你收集整理的php去除每行的重复文本,php删除文本文件中重复行的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle共享服务器模式的图,Orac
- 下一篇: tp5类的属性不存在_thinkPHP5