【问题标题】:Comparing two .txt files in PHP (~1MB)比较 PHP 中的两个 .txt 文件 (~1MB)
【发布时间】:2014-11-14 18:05:45
【问题描述】:

我正在编写一个程序,使用 PHP 和 cUrl 偶尔将特定网站的 HTML 保存到服务器。不过,我只想在网站上发生更改时实际保存文件,所以我的问题是:如何将长文本字符串(来自 cUrl 的最新 HTML)与现有的 .txt 文件进行比较? .txt 文件大约为 700kB,以便您了解大小。我是莫

【问题讨论】:

  • 对您收到的 HTML 进行哈希处理,并将其与服务器上保存的 HTML 的哈希值进行比较。这只是一个棋子。
  • @SpencerGrantDoak 如果输出中的任何地方都有日期戳,则每次都可能显示“错误”差异。
  • 好点,@scunliffe。我想他可以去掉 HTML 头部,只对 HTML 正文进行哈希处理。
  • 除非页面是静态的,否则这是不可能的,至少实际上不可能。
  • 我查过了,没有日期戳!它们是相同的。我现在要试试这个。

标签: php html curl


【解决方案1】:

strcmp() 可能是您的最佳选择。

如果两个字符串相同,则返回0 -

所以

if(strcmp($savedHTML, $newHTML) !== 0) {

    save($newHTML); // this would be your own function for saving

}

当然,如果存在细微差异,例如时间戳每次都有不同的值,这将不起作用。

【讨论】:

  • 没问题-祝你好运-!
【解决方案2】:

我不知道您正在保存的网站上的服务器表现如何,但如果它运行正常并且网站编码正确,如果没有任何变化,它应该返回304 Not Modified 状态。

我知道它们是几个大的 if,但您应该在尝试其他任何事情之前检查一下。

请参阅return values 部分。

【讨论】:

  • 是的,不幸的是,它看起来返回 200。但谢谢你的想法,那会很棒。
  • 为此,请求需要包含诸如If-Modified-SinceIf-None-Match 之类的标头。