检查文件夹中的文件名包含使用glob()的模式

时间:2015-06-28 12:12:34

标签: php file glob dir

我需要检查文件夹中包含'_'符号的文件。我已经使用glob函数从服务器位置获取文件。但我不知道检查文件名包含文件名中任何位置的符号。 我的文件名称如下格式。 student_178_grade1A

我这样做了。

$report_files=glob( '/user_uploads/'  . '/reportcards/' . 'term' . '_' . 10.'/*'.'.pdf' );

//this will return all files inside the folder.

if(count(report_files)>0)
 {
        //some stuff
 }
 else
 {

 }

我需要获取包含' _'的文件。在filename.I尝试

glob( '/user_uploads/'  . '/reportcards/' . 'term' . '_' . 10.'/*[_]'.'.pdf' );

但它不起作用

2 个答案:

答案 0 :(得分:3)

你的正则表达似乎不正确。这可能会做你想要的:

// Find any file in the directory "/user_uploads/reportcards/term_10/" 
// that has the file extension ".pdf"
$report_files = glob("\/user_uploads\/reportcards\/term\_10\/(.*)\.pdf");

// Find any file in the directory "/user_uploads/reportcards/term_10/" 
// containing the character "_".
$report_files = glob("\/user_uploads\/reportcards\/term\_10\/(.*)\_(.*)");

// Find any file in the directory "/user_uploads/reportcards/term_10/" 
// that has the file extension ".pdf" and contains the "_" character
$report_files = glob("\/user_uploads\/reportcards\/term\_10\/(.*)\_(.*)\.pdf");

如果您不完全了解正则表达式的作用,我会快速总结下面的内容。还有一个很棒的网站可以尝试定期展示如何构建它们的文档here

\/ = escapes the / character
\_ = escapes the _ character
\. = escapes the . character
(.*) = matches any character, number etc

答案 1 :(得分:1)

首先,你在学期结束后忘记了一个引号。

$report_files = glob('/user_uploads/'.'/reportcards/'.'term'.'_'.10.'/*[_]'.'.pdf');

其次,在user_uploads之后你有两个斜杠。

$report_files = glob('/user_uploads/reportcards/'.'term'.'_'.10.'/*[_]'.'.pdf');