
本文介绍如何使用 php 自动定位并读取指定目录下最后修改时间最晚的 .txt 文件内容,并将其赋值给变量供后续使用。核心步骤包括扫描文件、筛选 txt 文件、按修改时间排序、读取内容。
本文介绍如何使用 php 自动定位并读取指定目录下最后修改时间最晚的 .txt 文件内容,并将其赋值给变量供后续使用。核心步骤包括扫描文件、筛选 txt 文件、按修改时间排序、读取内容。
要实现“获取目录中最新修改的 .txt 文件内容”,不能仅依赖 scandir() 的默认字母序(如你代码中用 scandir($Directory, 1) 降序排列),因为文件名排序 ≠ 修改时间排序。必须结合 filemtime() 获取真实修改时间,并据此筛选。
以下是完整、健壮的实现方案:
<?php $directory = './downloads'; // 替换为你的实际路径
// 获取所有文件(排除 . 和 ..)
$files = array_filter(scandir($directory), function($file) use ($directory) {
return is_file($directory . '/' . $file) && pathinfo($file, PATHINFO_EXTENSION) === 'txt';
});
if (empty($files)) {
throw new Exception("目录中未找到任何 .txt 文件");
}
// 按修改时间降序排序(最新在前)
usort($files, function($a, $b) use ($directory) {
return filemtime($directory . '/' . $b) - filemtime($directory . '/' . $a);
});
$latestFile = $directory . '/' . $files[0];
$content = file_get_contents($latestFile);
// ✅ $content 现在包含最新 .txt 文件的全部文本内容,可直接用于输出、写入、解析等
echo "最新文件:{$files[0]}\n";
echo "内容长度:". strlen($content) . " 字符\n";
// 示例:保存为新报告
file_put_contents('./latest_report.txt', $content);
?>
✅ 关键说明与注意事项:
-
filemtime()返回 Unix 时间戳,usort()配合它能确保时间精度(毫秒级差异亦可区分); - 使用
pathinfo(..., PATHINFO_EXTENSION)精确匹配.txt(而非模糊strpos($file, '.txt'),避免误判如archive.txt.bak); - 建议添加
is_file()判断,防止目录项干扰; - 若需处理大文件,可用
fopen()+fread()流式读取替代file_get_contents(); - 生产环境建议增加错误处理(如权限检查
is_readable())和日志记录。
该方法简洁、可靠、符合 PSR 标准,适用于日志分析、自动化报告生成等典型场景。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











