0

我想比较两个文件以检查第二个文件是否从第一个文件修改。

对于这个实现,我计划比较这md5_file()两个文件。但问题是原始文件是由 Unix 行编码创建的,而第二个文件可能是任何类型的行编码(Unix、Mac 或 Windows)。所以文件比较总是失败。如何解决这个问题?

我试图从两个文件中删除空格,然后进行比较。但这种方法也失败了。有没有其他方法可以解决问题?

我不应该复制或更改第二个文件。

固定我自己如下

$file1 = md5(preg_replace('/\s/', '', file_get_contents($file1)));
$file2 = md5(preg_replace('/\s/', '', file_get_contents($file2)));

if ($file1 == $file2)
    continue;
4

2 回答 2

1

根据文件的大小,您可以将它们读入字符串,考虑到编码,然后 md5 这些字符串。

  $file1 = file_get_contents($file_url_1);
  $file2 = file_get_contents($file_url_2);

  $file1 = mb_convert_encoding($file1, "UTF-8", "whateverEncoding");
  $file2 = mb_convert_encoding($file2, "UTF-8", "whateverOtherEncoding");

  if (md5($file1) == md5($file2))

  ....
于 2013-07-22T07:59:37.253 回答
1

Simply replace all of the line endings in the second file with the unix style, but only do it to a temp file or such so you can preserve the original.

于 2013-07-22T07:22:18.027 回答