php删除文本文件中重复行的方法


Posted in PHP onApril 28, 2015

本文实例讲述了php删除文本文件中重复行的方法。分享给大家供大家参考。具体分析如下:

这个php函数用来删除文件中的重复行,还可以指定是否忽略大小写,和指定换行符

/**
 * 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));  
}

使用范例:

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

PHP 相关文章推荐
php DOS攻击实现代码(附如何防范)
May 29 PHP
PHP合并两个数组的两种方式的异同
Sep 14 PHP
php pki加密技术(openssl)详解
Jul 01 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
Jan 30 PHP
phpcms手机内容页面添加上一篇和下一篇
Jun 05 PHP
php中文验证码实现方法
Jun 18 PHP
Apache服务器下防止图片盗链的办法
Jul 06 PHP
PHP引用返回用法示例
May 28 PHP
magento后台无法登录解决办法的两种方法
Dec 09 PHP
利用php获得flv视频长度的实例代码
Oct 26 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 PHP
php实现简单的语法高亮函数实例分析
Apr 27 #PHP
php转换颜色为其反色的方法
Apr 27 #PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
Apr 27 #PHP
PHP+jQuery+Ajax实现用户登录与退出
Apr 27 #PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 #PHP
php使用cookie实现记住登录状态
Apr 27 #PHP
php curl请求信息和返回信息设置代码实例
Apr 27 #PHP
You might like
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
yii操作cookie实例简介
2014/07/09 PHP
10个简化PHP开发的工具
2014/12/25 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
采用call方式实现js继承
2014/05/20 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
2017/01/20 Javascript
nodejs密码加密中生成随机数的实例代码
2017/07/17 NodeJs
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
python中的字典操作及字典函数
2018/01/03 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
python实现ID3决策树算法
2018/08/29 Python
Python占用的内存优化教程
2019/07/28 Python
python实现在线翻译功能
2020/03/03 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
优秀辅导员事迹材料
2014/02/16 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
简单租房协议书
2014/10/21 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers