• Главная
  • » PHP
  • » Вывод файлов из директории по маске

#1 2023.11.23 16:33

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Вывод файлов из директории по маске

Вывожу файлы из директории по маске
Например файл "выааываыв.[sadasd].mp3

Код:

1
2
3
4
5
6
$files = glob($patch['temp'].'*.mp3');
$filter = preg_grep('/\.\[[\w+]+\]/', $files);
//$filter = preg_grep('/\.\[\w+\]/', $files); //пробовал так
foreach($filter as $file)
{
}

Оба варианта выводят не все файлы содержащую данную маску.
Что я делаю не так?

вот файлы эти не видит
если сделать

Код:

1
2
$files = glob($patch['temp'].'*.mp3');
var_dump($files);

покажет все файлы, значит где-то ошибка в preg_grep


Вложения

Отредактировано WapStyle (2023.11.23 16:37)

Неактивен

#2 2023.11.23 16:46

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Вывод файлов из директории по маске

не очень понимаю, что ты пытаешься сделать регуляркой.
тебе нужны не просто mp3 файлы, а еще с каким-то текстом в имени?
Добавлено спустя   5 минут  8 секунд:
попробуй через итератор что-ли

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
/** @var \SplFileInfo[] $result */
$result = [];
 
$dir __DIR__;
/** @var \SplFileInfo $fileInfo */
foreach (new \DirectoryIterator($dir) as $fileInfo) {
    if (!$fileInfo->isFile()) {
        continue;
    }
    if (\strtolower($fileInfo->getExtension()) !== 'mp3') {
        continue;
    }
    $result[] = $fileInfo->getFileInfo();
}
 
\print_r($result);

Неактивен

#3 2023.11.23 17:25

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: Вывод файлов из директории по маске

Да только те файлы которые содержат в имени [тут текст]
короче плюнул на эту идею...
по старинке

Код:

1
2
3
4
5
6
7
8
// Проверка временной папки на наличие новых файлов
$files = glob($patch['temp'].'*.mp3');
foreach($files as $file)
{
// Вытащим записи между []
preg_match('/\.\[(.*?)\]/', $file, $matches);
// Запись между .[] должна быть не пустой
if(empty($matches[1])) continue;

Отредактировано WapStyle (2023.11.23 18:02)

Неактивен

#4 2023.11.23 20:04

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Вывод файлов из директории по маске

так можно.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
/** @var \SplFileInfo[] $result */
$result = [];
 
$dir __DIR__;
/** @var \SplFileInfo $fileInfo */
foreach (new \DirectoryIterator($dir) as $fileInfo) {
    if (!$fileInfo->isFile()) {
        continue;
    }
    if (\strtolower($fileInfo->getExtension()) !== 'mp3') {
        continue;
    }
    if (!\preg_match('/\[+\w+\]+/'$fileInfo->getFilename())) {
        continue;
    }
 
    $result[] = $fileInfo->getFileInfo();
}
 
\print_r($result);

регулярки тут тестирвоать можно, например https://regex101.com/

Неактивен

  • Главная
  • » PHP
  • » Вывод файлов из директории по маске

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.010 s