PHP Получить имя файла, начиная с префикса

Это настраиваемая функция. На данный момент эта функция получает весь файл в каталоге по умолчанию, вырезает ".php" и перечислит их.

Проблема в том, что я хочу получать файлы только из каталога с начальным префиксом "tpl-" Пример: tpl-login-page.php

/* Get template name of the file */
        function get_template_name (){
            $files = preg_grep('~\.(php)$~', scandir(admin . "templates/default/"));
                foreach($files as $file){
                    $file = str_replace('.php','',$file);
                    echo $file . "<br/>";
                }
        }

Ответ 1

Вам нужно изменить регулярное выражение в preg_grep:

$files = preg_grep('~^tpl-.*\.php$~', scandir(admin . "templates/default/"));

Объяснение:

  1. ^tpl- - начиная с "tpl-"

  2. .* - любые символы

  3. \.php$ - заканчивается на .php

Ответ 2

Мне нравится другой, простой способ:

1. получить все файлы в папке

   $path = './images'; 
   $files = glob($path.'/*');

2. получить все файлы с расширением .jpg

   $path = './images'; 
   $files = glob($path.'/*.jpg');

3. получить все файлы с префиксом myprefix_

   $path = './images'; 
   $files = glob($path.'/myprefix_*');

Ответ 3

 $target_file_png = glob($target_dir.'/group_'.$groupId.'*.png'); 

$target_file_png вернет массив, содержащий все файлы в папке, указанной в пути $target_dir, начиная с '/group_'.$groupId.' и указывая формат файла как *.png