我想比较两个文件以检查是否从第一个文件修改了第二个文件。
对于此实现,我计划比较两个文件的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;
答案 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))
....