1

目前我有一个 PHP 脚本,它提供中等数量(200 行)的文本。我想知道是否有可能获取比时间最新的文本文件的内容,也许是 PHP 的 filemtime() 进行最后一次修改。

是否可以以这种方式获取文本文件的内容?

编辑: filemtime() 是不合逻辑的,因为它在那之后没有任何更新。

为了清除它,我试图获取比时间更新的文本文件的所有内部内容。

示例:line1 在 time1 发布,line2 在 time2 发布,依此类推。我希望能够指定 time2 并获取比 time2 更新的文件的内容。

4

3 回答 3

1

您需要为文件中的所有条目加上时间戳。然后使用标准fopen()/fread()函数,逐行读取内容。然后,您需要使用正则表达式匹配过滤时间preg_match(),并将其与您要查找的时间进行比较。

于 2012-07-14T04:52:22.377 回答
0

您可以按照指示使用 filemtime() 或stat()来确定特定文件的最后修改。有了这些信息,您就可以确定什么是最新文件并相应地提取内容。

您可以确定自上次访问以来文件的哪些内容是新内容的唯一方法是将以前的内容与最新内容进行比较,或者具有可用于区分内容过时的时间戳。

如果有某种方法可以在文件中插入时间戳,那么这将允许您确定在该给定点之前存在哪些内容。然后,您将使用正则表达式来过滤时间,以便仅在 X 时间之后检索数据。您将需要某种确定 X 的方法,这取决于您的体系结构,可能就像使用上次更新更新静态文件一样简单。然后,您将使用该值来确定哪些数据是“新的”。

第二种方法是在访问后归档文件,然后将以前的内容与当前内容进行比较,以确定哪些内容发生了变化。

于 2012-07-14T04:48:29.670 回答
0

如果您的意思是“文件比某个时间更新的文件中的内容”,那么是的你似乎已经回答了你自己的问题。filemtime()如果您关心修改时间,请使用,并将其与您感兴趣的时间进行比较。

如果您的意思是“文件中的内容比某个时间更新”,那么不,不是没有其他方法可以识别文件中的哪些内容比您感兴趣的时间更新。(例如,如果文件的每一行都以时间戳开始,指示该行的写入时间,您可以使用它。)这是因为文件系统通常不会跟踪文件中单个字节或行的时间戳。通常只有与整个文件关联的时间戳。

于 2012-07-14T04:47:27.933 回答