PHP将字符串与文本文件进行即时比较

时间:2013-03-08 19:19:25

标签: php file

在PHP中将字符串与文本文件进行比较的最优雅,最有效的方法是什么。

流程:

我在服务器var\user\rinchik\file\fileName\version0.txt上有一个文件。

用户来到网站,做他的事情并得到$string字符长度为N

我需要检查这个字符串是否与var\user\rinchik\file\fileName\version0.txt的内容相同。如果是那么什么都不做。如果不是,请在此处保存此字符串:var\user\rinchik\file\fileName\version1.txt

我应该将文件version0.txt读入另一个字符串,然后对它们进行哈希并比较哈希值吗?

或者有一些隐藏的魔术方法,例如:将新字符串保存为version1.txt,运行类似file_compare('version0.txt','version1.txt');它会成功吗?

3 个答案:

答案 0 :(得分:3)

您应该将文件version0.txt读入字符串$ string1并检查$string == $string1(我认为没有必要哈希$string$string1)。

PHP中没有可以比较两个文件内容的内置函数。

另一种方法是,您可以使用shell命令diff。例如exec('diff version0.txt version1.txt', $res, $rev)并检查返回值if ($rev == 0) {...}

答案 1 :(得分:1)

由于您知道字符串的长度,因此可以先检查strlen($string) == filesize($filename)。如果它们不同,您甚至不需要检查内容。

如果它们相同,那么您可以{Mar}的答案执行$string == file_get_contents($filename),或者使用md5 / md5_file哈希,以验证内容是否相同。

当然,如果生成字符串的方法意味着文件的长度总是相同(例如散列函数的结果),那么检查文件大小是没有意义的。

答案 2 :(得分:0)

快速而脏的方法,无需先将字符串写入文件:

if (md5($string) == md5_file('/path/to/your/file')) {
  ... file matches string ..
} else {
  ... not a match, create version1.txt
}