2013-12-04 5 views
0

У меня есть следующие коды/фотографии для своих продуктов:Удаление файлов из каталога, используя максимальное количество

D2000-1.jpg 
D2000-2.jpg 
D2000-3.jpg 

D2001-1.jpg 
D2001-2.jpg 
D2001-3.jpg 
D2001-4.jpg 

Я хочу, чтобы удалить все после -1.jpg фото D2000 продукта и -2.JPG фото продукта D2001, и остается только:

D2000-1.jpg 
D2001-1.jpg 
D2001-2.jpg 

Возможно ли это с помощью PHP? Я хочу сделать это, потому что у меня есть тысячи фотографий для удаления.

EDIT:

Вот что я сделал сейчас:

<?php 
// Maxmimum photos 
$codes = array(
    'D2000' => '1', 
    'D2001' => '2', 
); 

// Directory listing 
$files = scandir(dirname(__FILE__) . '/products'); 
natsort($files); 

// Process deletion 
foreach($codes as $code => $photo) { 
    // 
} 
?> 
+2

, например. для D2002 и D2003 также для того, чтобы дать понять, что нужно достичь –

+0

Дайте ясность вашему вопросу? – user2486495

ответ

0

Вместо вашего Еогеасп:

$processed = array(); 

foreach($files as $f){ 
    $n = basename($f, '.jpg'); 
    $d = explode('-', $n); 
    $processed[$d[0]][] = $d[1]; 
} 

foreach($codes as $name=>$max){ 
    while(isset($processed[$name][$max-1])){ 
     $suffix = array_pop($processed[$name]); 
     unlink($name.'-'.$suffix); 
    } 
} 

Должно работать, не проверял.

+0

Отлично! Я просто изменил $ max-1 на $ max и $ suffix на $ suffix. '. Jpg' :-)) Большое спасибо! – user3001244

0

Я не дам вам готового решения, кроме некоторого псевдо (непроверенного) кода.

// we will get DXXXX and number after '-' separately for every photo name. 
$names = array_map(function($file) { 
    //get only file without extension 
    $fileName = explode('.', $file); 
    //separate e.g. D2000 and 1 
    return explode('-', $fileName[0]); 
},$files); 

//you should iterate files, not codes 
foreach($files as $file) { 
    //if this photo not in $codes, don't do anything 
    if(!in_array($file[0], $codes)) { continue; } 
    //if number of photo > threshold, then delete 
    if($file[1]> $codes[$file[0]) { 
    unlink($file[0].$file[1].'.jpg'); 
    } 

} 

Это должно дать вам форму, что вы ищете.

Смежные вопросы