本文详解如何在 PHP 中安全、精准地扫描指定目录(如 archives/),筛选符合命名规范的文件,并将结果以 JSON 格式写入磁盘(如 archives/events.txt),同时规避常见错误(如未定义变量、路径问题、冗余文件写入等)。 在 Web 开发中,动态获取服务器端的文件列表并持久化
本文详解如何在 PHP 中安全、精准地扫描指定目录(如 archives/),筛选符合命名规范的文件,并将结果以 JSON 格式写入磁盘(如 archives/events.txt),同时规避常见错误(如未定义变量、路径问题、冗余文件写入等)。
在 Web 开发中,动态获取服务器端的文件列表并持久化存储是一个高频需求,例如生成事件索引、缓存文件清单。但很多人一上来就直接调用 scandir() 往里写,结果不是路径解析出错,就是文件被覆盖,或者格式不兼容导致前端 AJAX 调用一头雾水——坑都不少。下面这套方案偏稳健型,可复用,避坑策略也一并打包了。
先强调一点:不要硬编码路径,也不要使用不安全的筛选方式。有些原始代码里 scandir('archives') 连目录是否存在都不检查,更别说后面用 print_r($files1, true) 生成可读的调试字符串——这对 JavaScript 来说不是标准 JSON,前端根本无法直接解析。改进后的函数,把路径验证、后缀过滤、格式标准化和防自写入都安排上了:
长期稳定更新的攒劲资源: >>>点此立即查看<<<
很多新手在 JavaScript 里犯的毛病是 xhr.send(data) 直接报错,因为 data 变量从未声明。这种情况分两种处理:如果不需要传参,就调用 xhr.send() 空括号;如果必须 POST 数据,则需要显式构造参数:
function LISTevents() { const xhr = new XMLHttpRequest(); xhr.open("POST", "json-events.php"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onload = function() { if (xhr.status === 200) { console.log("File list saved successfully:", xhr.response); } else { console.error("Server error:", xhr.statusText); } }; xhr.onerror = () => console.error("Network error"); xhr.send(); // 无参数时不要传 data return false;}
执行脚本后,archives/events.txt 会生成类似 ["20240501-log.txt","20240502-data.txt"] 的标准 JSON 数组。前端直接拿来消费,完全没有障碍。这样一来,“文件未创建”和“格式不可用”这两个烦人的痛点,就算彻底解决了。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述