PHP如何读取指定目录下匹配指定前缀的所有文件内容并输出
解决方案
方案1:使用glob()函数直接匹配目标文件(最优)
glob()原生支持通配符匹配文件名,可以直接筛选出所有符合personalchat*命名规则的文件,无需手动过滤目录内容,代码更简洁:
<?php // 匹配目录下所有以personalchat开头的文件,返回匹配的文件路径数组 $filePaths = glob('/var/www/html/web/www/chat.support/status/personalchat*'); foreach ($filePaths as $filePath) { // 先判断路径是文件,排除匹配到的目录避免报错 if (is_file($filePath)) { // 读取文件内容直接输出 echo file_get_contents($filePath); // 不同文件内容之间可按需加分割线,默认注释 // echo '<hr>'; } } ?>
方案2:改造你现有scandir版本的代码
你之前的代码只输出了文件名,需要额外做3步调整:拼接完整文件路径、过滤匹配命名规则的文件、读取文件内容输出,调整后代码如下:
<?php $mydir = '/var/www/html/web/www/chat.support/status/'; $myfiles = array_diff(scandir($mydir), array('.', '..')); foreach($myfiles as $name) { // 1. 过滤以personalchat开头的目标文件 if (str_starts_with($name, 'personalchat')) { $fullPath = $mydir . $name; // 2. 判断是普通文件再读取 if (is_file($fullPath)) { // 3. 读取内容输出 echo file_get_contents($fullPath); // 不同文件内容之间可按需加分割线,默认注释 // echo '<hr>'; } } } ?>
注:如果你的PHP版本低于8.0,不支持
str_starts_with函数,可以替换为strpos($name, 'personalchat') === 0实现同样的前缀匹配效果。
内容的提问来源于stack exchange,提问作者Darren
相关产品推荐
相关产品推荐

