PHP中如何通过通配符创建匹配指定前缀的文件名变量
PHP中如何通过通配符创建匹配指定前缀的文件名变量
嘿,我完全懂你碰到的问题啦——直接把带通配符的字符串赋值给变量,PHP可不会自动帮你定位到真实存在的文件哦!咱们得用PHP专门的文件匹配工具来搞定这个需求。
核心解决方法:用glob()函数匹配文件
PHP的glob()函数就是专门用来根据通配符规则查找文件路径的,完美契合你的需求:
- 如果你要匹配所有以TEST_REQUEST开头的.xml文件,可以这么写:
// 执行通配符匹配,返回符合条件的文件路径数组 $matchingFiles = glob('TEST_REQUEST*.xml'); // 因为可能有多个匹配文件,先判断是否找到结果 if (!empty($matchingFiles)) { // 取第一个匹配到的文件(如果确定只有一个的话) $file = $matchingFiles[0]; // 接下来就可以用$file做后续操作啦,比如加载文件内容 } else { echo "没有找到符合前缀的XML文件!"; }
- 要是你需要匹配
TEST_REQUEST.*.xml这种格式(比如中间带任意字符的,像TEST_REQUEST.20240520.xml),直接把通配符规则传给glob()就行:
$matchingFiles = glob('TEST_REQUEST.*.xml');
为什么之前的写法会报错?
你之前直接把'TEST_REQUEST*.xml'赋值给$file,PHP只会把它当成一个普通的字符串,不会自动去磁盘上查找匹配的文件。当你用这个字符串去加载外部实体时,系统找不到名为TEST_REQUEST*.xml的真实文件,自然就抛出“failed to load external entity”的错误啦。
备注:内容来源于stack exchange,提问作者Pat
相关产品推荐
相关产品推荐

