Проверьте, что имя файла внутри папки содержит шаблон, используя 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');
Другие вопросы по тегам