如何用PHP列出网站目录所有PHP文件并获取其meta标签信息
PHP批量获取指定目录下PHP文件及Meta标签实现方法
需求说明
- 列出网站指定目录下的所有PHP文件并生成对应访问链接
- 批量提取每个PHP文件的meta标签信息,包含作者、关键词、描述等字段
现有问题
已经可以通过glob方法列出目录下的所有PHP文件,但仅能指定单个文件路径调用get_meta_tags方法获取meta信息,如果不传入具体文件名,该方法只会返回目录下index文件的meta标签,无法批量获取所有文件的信息。
当前可用的单文件Meta标签获取代码如下:
<?php $tags = get_meta_tags('http://path-to-a-folder/name-of-a-file'); echo $tags['author']; echo $tags['keywords']; echo $tags['description']; ?>
实现代码
结合glob遍历本地PHP文件、拼接对应访问URL后批量调用get_meta_tags即可实现需求,参考代码如下:
<?php // 配置项:替换为自身站点对应路径 $local_scan_dir = __DIR__ . '/your-target-folder/'; // 待扫描的本地目录绝对路径 $web_access_prefix = 'http://your-domain.com/your-target-folder/'; // 对应目录的Web访问前缀 // 遍历目录下所有后缀为.php的文件 $all_php_files = glob($local_scan_dir . '*.php'); foreach ($all_php_files as $local_file) { $filename = basename($local_file); $file_access_url = $web_access_prefix . $filename; // 获取当前文件Meta标签,不存在的字段做容错处理 $meta = get_meta_tags($file_access_url); $author = $meta['author'] ?? '无'; $keywords = $meta['keywords'] ?? '无'; $description = $meta['description'] ?? '无'; // 输出带链接的文件信息,添加XSS转义保证安全 echo '<div>'; echo '<p><a href="' . htmlspecialchars($file_access_url) . '" target="_blank">' . htmlspecialchars($filename) . '</a></p>'; echo '<ul>'; echo '<li>作者:' . htmlspecialchars($author) . '</li>'; echo '<li>关键词:' . htmlspecialchars($keywords) . '</li>'; echo '<li>描述:' . htmlspecialchars($description) . '</li>'; echo '</ul>'; echo '</div>'; } ?>
注意事项
- 请确保配置的
$web_access_prefix可以正常通过HTTP访问对应目录下的PHP文件,否则get_meta_tags无法正常解析Meta信息 - 如果需要扫描多级子目录下的PHP文件,可将
glob替换为递归目录遍历逻辑即可 - 生产环境使用建议根据需求添加权限校验、分页、缓存等功能优化体验
内容的提问来源于stack exchange,提问作者paco
相关产品推荐
相关产品推荐

