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
相关产品推荐
相关产品推荐

