我需要检查文件夹中的文件是否包含'_'
符号。我已经使用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
{
}
我需要获取文件名中包含"_"的文件。我试过
glob( '/user_uploads/' . '/reportcards/' . 'term' . '_' . 10.'/*[_]'.'.pdf' );
但它不工作
您的正则表达式似乎不正确。这可能会做你想做的事:
// 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");
如果你不完全理解正则表达式的作用,我在下面简要总结了一下正在做的事情。还有一个很棒的网站可以尝试常规表达,并提供如何在这里构建它们的文档。
/ = escapes the / character
_ = escapes the _ character
. = escapes the . character
(.*) = matches any character, number etc
首先,您忘记了术语后的引号。
$report_files = glob('/user_uploads/'.'/reportcards/'.'term'.'_'.10.'/*[_]'.'.pdf');
其次,在user_uploads
之后有两个斜杠。
$report_files = glob('/user_uploads/reportcards/'.'term'.'_'.10.'/*[_]'.'.pdf');