温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

php中怎么删除文本文件的重复行

发布时间:2021-07-27 15:25:04 阅读:161 作者:Leah 栏目:开发技术
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

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($NewLinearray_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中怎么删除文本文件的重复行的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI

开发者交流群×