Проверьте, что имя файла внутри папки содержит шаблон, используя glob()
Мне нужно проверить файлы внутри папки, содержащей '_'
условное обозначение. Я использовал функцию 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' );
но это не работает
2 ответа
Ваше регулярное выражение не кажется правильным. Это может делать то, что вы хотите:
// 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');