PHP はテキストドキュメント内の繰り返し行をどのように処理しますか?この記事では、PHP でテキスト ファイルの重複行を削除する方法を主に紹介し、PHP でテキスト ファイルを操作する関連スキルについても説明します。お役に立てれば幸いです。
この記事の例では、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 ファイルの読み取り fread、fgets、fgetc、file_get_contents と file 関数の使用例コード
以上がPHPはテキストドキュメント内の重複行を処理しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。