phpでテキストファイルの重複行を削除する方法
この例では、PHP でテキスト ファイル内の重複行を削除する方法を説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
このphp関数は、ファイル内の重複行を削除するために使用され、大文字と小文字を無視して改行文字を指定するかどうかを指定することもできます。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
/** *重複行を削除 * この関数は、指定されたテキスト ファイルの重複した行をすべて削除します。 * * @パラメータ文字列 * @param bool * @戻り文字列 */ 関数 RemoveDuplicatedLines($Filepath, $IgnoreCase=false, $NewLine="n"){ if (!file_exists($Filepath)){ $ErrorMsg = 'RemoveDuplicatedLines エラー: '; $ErrorMsg .= '指定されたファイル ' . $Filepath ' は存在しません!'; 死ぬ($ErrorMsg); } $Content = file_get_contents($Filepath); $Content = RemoveDuplicatedLinesByString($Content, $IgnoreCase, $NewLine); // ファイルは書き込み可能ですか? if (!is_writeable($Filepath)){ $ErrorMsg = 'RemoveDuplicatedLines エラー: '; $ErrorMsg .= '指定されたファイル ' . $Filepath ' は書き込み可能ではありません!'; 死ぬ($ErrorMsg); } //新しいファイルを書き込みます $FileResource = fopen($Filepath, 'w+'); fwrite($FileResource, $Content); fclose($FileResource); }
/** * RemoveDuplicatedLinesByString * この関数は、指定された文字列の重複した行をすべて削除します。 * * @パラメータ文字列 * @param bool * @戻り文字列 */ 関数 RemoveDuplicatedLinesByString($Lines, $IgnoreCase=false, $NewLine="n"){ if (is_array($Lines)) $Lines = implode($NewLine, $Lines); $Lines =explode($NewLine, $Lines); $LineArray = array(); $重複 = 0; // 指定されたファイルのすべての行を調べます for ($Line=0; $Line $CurrentLine = トリム($Lines[$Line]); // 空行をスキップします if ($CurrentLine == '') 続き; //行の内容を配列キーとして使用します $LineKey = $CurrentLine; if ($IgnoreCase) $LineKey = strto lower($LineKey); // 配列キーが既に存在するかどうかを確認します。 // そうでない場合は追加し、そうでない場合はカウンターを増やします if (!isset($LineArray[$LineKey])) $LineArray[$LineKey] = $CurrentLine; その他 $重複++; } // 配列をソートします asort($LineArray); // 削除された行数を返します return implode($NewLine, array_values($LineArray)); } |
使用范例:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// 例 1 // 最初のパラメータで定義されたファイルの重複した行をすべて削除します。 $RemovedLinesCount = RemoveDuplicatedLines('test.txt'); print "test.txt ファイルから $RemovedLinesCount の重複行を削除しました。"; // 例 2 (大文字と小文字を区別しない) // 上記と同じですが、行の大文字と小文字を無視するだけです。 RemoveDuplicatedLines('test.txt', true); // 例 3 (カスタム改行文字) // 3 番目のパラメータを使用して、どの文字を定義できます // は改行インジケーターとして使用する必要があります。この場合 // サンプル ファイルは 'foo;bar;foo;foo' のようになります // 'foo;bar' に置き換えられます RemoveDuplicatedLines('test.txt', false, ';'); |
ここに記載されている大家のphpプログラムの設計に役立つことを希望します。
http://www.bkjia.com/PHPjc/991652.html