0

PHP で 2 つのテキスト ファイルを比較する必要があります。1 つのファイルはユーザーがアップロードし、もう 1 つはサーバーによって提供され、Windows 上で実行されます。ファイルが別の Windows コンピューターから送信された場合、これは正常に機能しますが、Linux コンピューターからはファイルが異なって出力されます。これは、行末が異なるためであると想定しています。Windows のテキスト ファイルと Linux のテキスト ファイルを比較する簡単な方法はありますか?

現在、これは私のコードです。

$text1 = file_get_contents($file1);
$text2 = file_get_contents($file2);
if (strcmp($content, $content2) == 0) { etc;
4

3 に答える 3

6

両方のファイルで、行末CRLFを行末に置き換えるか、その逆にすることができます。次のようにしてみてください。LF

$text1 = str_replace("\r\n", "\n", $text1)

についても同様です$text2

于 2010-08-15T10:59:10.907 に答える
1

別の、より移植性の高いオプションを追加するだけです (他の回答者によって提案された置換は、あなたのケースでは既に問題ありません)、file()関数はファイルデータを配列に分割し、Windows と Linux の両方のエンコーディングを処理できるようです:

$text1 = file($file1, FILE_IGNORE_NEW_LINES);
$text2 = file($file2, FILE_IGNORE_NEW_LINES);  

if ($text1 === $text2) .... 

auto_detect_line_endingsランタイム設定がオンになっている場合は、Macintosh の行末も処理できます。

于 2010-08-15T11:21:51.337 に答える
0
preg_replace('/\v+/','\n',$text1)==preg_replace('/\v+/','\n',$text2)
于 2010-08-15T11:20:00.337 に答える