You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何扫描指定目录并自动为每个文件生成含内容的DIV元素

实现代码(foreach版本,符合你的开发需求)

<div>
<?php
// 定义目标目录路径
$assetDir = '../trx/assets/';
// 扫描目录返回所有条目数组
$fileList = scandir($assetDir);

// 遍历所有目录条目
foreach ($fileList as $entry) {
    // 过滤.、..且仅处理普通文件,避免读取子目录
    if ($entry != "." && $entry != ".." && is_file($assetDir . $entry)) {
        // 为每个文件生成独立div,可自定义类名控制样式
        echo '<div class="single-file-content">';
        // 输出文件名(加htmlspecialchars避免XSS风险)
        echo '<p class="file-name">文件:' . htmlspecialchars($entry) . '</p>';
        // 输出文件内容
        echo nl2br(htmlspecialchars(file_get_contents($assetDir . $entry)));
        echo '</div>';
    }
}
?>
</div>

补充说明

  • 代码中加入is_file()判断,避免把子目录当成文件读取引发报错
  • 新增htmlspecialchars()处理,防止文件名或文件内容中嵌入的HTML代码被执行,规避XSS安全风险,如果明确所有文件都是纯文本无恶意代码可删除该处理
  • 如需仅读取特定后缀文件,可新增后缀判断逻辑,示例如下:
    // 仅读取txt后缀的文件
    if (pathinfo($entry, PATHINFO_EXTENSION) === 'txt') {
        // 原有输出逻辑
    }
    

兼容原有opendir写法的版本

如果习惯用原有opendir的逻辑,也可以直接修改原有代码实现需求:

<div>
<?php
if ($handle = opendir('../trx/assets/')) {
  while (false !== ($entry = readdir($handle))) {
    if ($entry != "." && $entry != ".." && is_file('../trx/assets/'.$entry)) {
        echo '<div class="single-file-content">';
        echo '<p class="file-name">文件:' . htmlspecialchars($entry) . '</p>';
        echo nl2br(htmlspecialchars(file_get_contents('../trx/assets/'.$entry)));
        echo '</div>';
    }
  }
  closedir($handle);
}
?>
</div>

内容的提问来源于stack exchange,提问作者confused

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:24:02