md5sum相同内容的不同值

时间:2013-07-22 07:20:05

标签: php md5 md5-file

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

对于此实现,我计划比较两个文件的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;

2 个答案:

答案 0 :(得分:1)

只需使用unix样式替换第二个文件中的所有行结尾,但只能将其替换为临时文件等,以便保留原始文件。

答案 1 :(得分: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))

  ....