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技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux环境进程间通信(五): 共享内存(上)

Linux环境进程间通信&#xff08;五&#xff09;: 共享内存&#xff08;上&#xff09; 共享内存可以说是最有用的进程间通信方式&#xff0c;也是最快的IPC形式。两个不同进程A、B共享内存的意思是&#xff0c;同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即…

JS 跳出多重循环

今天学到了如何跳出多重循环 转载于:https://www.cnblogs.com/dmc-nero/p/9573971.html

jna 使用_使用JNA的透明JFrame

jna 使用在使JFrame透明中&#xff0c;我展示了一种使用AWTUtilities类使框架透明的方法。 但是使用该类会导致访问限制编译时错误&#xff0c;该文章中还显示了Eclipse中的解析。 现在&#xff0c;这里是使用Java本机的版本。 我使用Java本机访问&#xff08;JNA&#xff09;库…

通过命令查看linux 密码,linux查看用户密码(linux查看用户密码命令)

linux查看用户密码(linux查看用户密码命令)2020-05-15 13:18:30共10个回答1、用户名和密码的存储位置存储帐号的文件:/etc/passwd存储密码的文件:/etc/shadow2、可以使用cat、more、head、tail以及vim等命令查看或者修改,如下图所示:比如要查找系统中admin普通用户的密码,则执行…

命名规范参考

转载于:https://www.cnblogs.com/jy13638593346/p/9575481.html

Guavate:桥接Guava和Java8的微型库

Java8很棒&#xff0c;并向JDK添加了一些有用的抽象&#xff0c;这些抽象通过Google出色的Guava commons库在Java社区中得到了普及。 小组讨论表明&#xff0c; 不久将有一个需要Java 8的Guava版本&#xff0c;从而弥合了Guava和Java8之间的鸿沟。 但是&#xff0c;直到这样的时…

常见的几种异常类型-熟记

今天把几个常见的异常总结一下&#xff0c;希望自己能熟记&#xff0c;别忘记&#xff01;&#xff01;&#xff01; 1.NullPointerException: 空指针异常。经验发现这个异常是经常会发生的&#xff0c;属于运行时异常。 举例&#xff1a; public static void main(String[] ar…

linux不重启更新内核,编译并使用kpath不重启更新linux-kernel

yum install ncurses-devel -ytar -xvf linux-4.9.3.tar.xzcd linux-4.9.3/make menuconfigmake allmake modules_installmake installKpatch主要有四个组件。kpatch-build 产生hot patch。 通过对比包含patch和不包含patch的kernel差异&#xff0c;产生…

The type sun.management.ManagementFactory is not visible

Eclipse默认将这些受访问限制的API设成了Error。 解决方法&#xff1a; 只要将Windows---Preferences---Java--Complicer---Errors/Warings里面的Deprecated and restricted API中的Forbidden references(access rules) 选为Waring就可以编译过了 今天在JDK1.7中引入sun.manage…

简单选项卡

简单选项卡 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Document</title><style>#div1 {width: 350px;margin: 0 auto;}#div1 button{width: 100px; height: 30px; background-color: …

探索应用程序的指路明灯:Route 和 Router 入门指南(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

Linux密码是一个回文,usermod命令和用户密码管理

3.4 usermod命令3.5 用户密码管理3.6 mkpasswd命令3.4 usermod命令在某些情况下需要改变现的用户的属性&#xff0c;改变用户的home目录、登录名、密码、登录shell&#xff0c;截止日期等&#xff0c;在这种情况下“usermod命令被使用。实例如下&#xff1a;#格式如下&#xff…

php cdi_配置CDI对话的超时

php cdi在开发JSF应用程序时&#xff0c;CDI对话范围是一个很好的功能。 想象一下&#xff0c;您有大型数据表&#xff0c;需要很长时间才能加载。 由于高内存消耗&#xff0c;您通常不希望将加载的数据放置在会话作用域的Bean中。 而且&#xff0c;您不能将加载的数据放在视图…

org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuEx

org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuExc.jsp at line 163这两句话表示创建一个新的文件失败。所以可能是当前用户没有文件路径的访问权限&#xff0c;也有可能是文件路径错误等其他关于文件路径的问题

解决在html中引入font-awesome的css文件后, 图标显示不出来

今天小颖在做项目时&#xff0c;需要在html文件中引入font-awesome.min.css&#xff0c;但是引入后&#xff1a; 以前小颖在用font-awesome库里的图标时&#xff0c;都是直接从node中下包&#xff0c;然后在main.js中引入得即可&#xff0c;第一次直接在html中直接引入css文件&…

linux 提供多用户telnet,linux系统telnet命令怎么用

2016-10-24 回答telnet命令通常用来远程登录。telnet程序是基于telnet协议的远程登录客户端程序。telnet协议是tcp/ip协议族中的一员&#xff0c;是internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用…

Stackoverflow:您从未见过的7个最佳Java答案

您可以在Stackoverflow上找到哪些最有趣的答案&#xff1f; Stackoverflow是开发人员的金矿。 它可以帮助我们找到遇到的特定问题的最有用答案&#xff0c;并且我们总是从中学习新事物。 对于以下文章&#xff0c;我们研究了最流行的Java问题和答案&#xff0c;并决定重点介绍…

WORD中如何自动生成目录?

步骤&#xff1a; 1、输入当做标题的文字 2、将文字设置为标题样式 3、光标放在要添加目录的位置 4、选择插入->引用->索引和目录->目录->确定

C#控件之Repeater控件使用

歡迎大家來討論&#xff0c;修改&#xff0c;一定虛心接受。 1.為什麼使用Repeater控件&#xff1f; 關於把從數據庫讀取的數據綁定到前台頁面&#xff0c;我們可以使用DataGrid、DataGridView以及Repeater來佈局&#xff0c;三者均可以直接綁定DataTable中的字段&#xff0c;但…