PHP使用glob函数读取含逗号的文件夹路径返回空数组问题
PHP glob函数路径含逗号返回空数组的解决方案
问题原因
glob函数默认会将路径中的逗号识别为模式扩展的分隔符,用于支持{file1,file2,*.txt}这类多模式匹配语法,因此路径中存在未转义的逗号时,函数会错误解析路径规则,导致匹配不到对应文件。
修复方案
方案1:转义路径中的特殊字符
对路径中的逗号(以及其他glob特殊字符如{、}、*等)添加反斜杠转义,即可正常识别路径:
$path = 'upload/Test, Folder'; // 转义路径中的逗号 $safe_path = str_replace(',', '\,', ABSPATH . $path); print_r(glob($safe_path . "/*.*"));
方案2:改用原生目录遍历类(更稳定)
如果不需要使用glob的模式匹配能力,直接用PHP内置的DirectoryIterator遍历目录,完全不受路径特殊字符影响:
$path = ABSPATH . 'upload/Test, Folder'; $file_list = []; foreach (new DirectoryIterator($path) as $item) { // 只保留普通文件,过滤目录和.、.. if ($item->isFile()) { $file_list[] = $item->getFilename(); } } print_r($file_list);
内容的提问来源于stack exchange,提问作者iRedux
相关产品推荐
相关产品推荐

