2013-08-02 5 views
1

это как я сохранить изображение и создавать эскизы для этого, каждое изображение может иметь миниатюру с различными размерамископировать все файлы, которые заканчиваются определенным именем в другой каталог

original image : 
    abc.jpg 

    thumbnails : 

    100X150_abc.jpg 
    80X80_abc.jpg 
etc... 

теперь я сделал ошибку и около двух сотен моих изображений были сохранены в неправильном каталоге Я знаю название исходных изображений, но я не уверен в значках

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

позволяет сказать, что я хочу, чтобы скопировать мой abc.jpg из 06 каталога в 07 каталоге

rename('images/06/abc.jpg', 'images/07/abc.jpg'); 

, но что я могу делать эскизы? существует ли регулярное выражение для этого?

нравится!

rename('thumbs/06/^_abc.jpg', 'thumbs/07/^_abc.jpg'); 

в основном я хочу, чтобы скопировать все изображения, которые заканчиваются определенным именем (например, _abc.jpg) в другой каталог

ответ

3

Функция glob() поддерживает * в качестве подстановочного знака (но без поддержки полного регулярного выражения). Она возвращает массив соответствующих имен файлов:

$from = '/absolute/path/thumbs/06/'; 
$to = '/absolute/path/thumbs/07/'; 
chdir($from); // in this way glob() can give us just the file names 
foreach(glob('*_abc.jpg') as $name) { 
    rename($from.$name, $to.$name); 
} 

glob() функция не так хорошо известна, но очень удобно в таких ситуациях, потому что другие функции PHP файл не поддерживают такие вещи, как подстановочные знаки.

0

Используйте rename('images/06/*abc.jpg', 'images/07/*abc.jpg'); и если вы хотите просто эскизы: rename('images/06/*_abc.jpg', 'images/07/*_abc.jpg'); Кстати, если вы хотите, чтобы все файлы, которые начинаются с использования abc abc*.jpg

+0

Если вы не уверены, зачем вы отправляете его в качестве ответа? Используйте комментарии. –

+0

Я не пробовал, но он должен работать. –

+0

* abc.jpg означает все файлы с концом abc.jpg im sure now. –

1

Вот код, который должен работать:

<?php 
$olddir = "./images/06/"; 
$newdir = "./images/07/"; 
$files = scandir($olddir); 
$count = count($files); 
echo $count; 
$x = 2; 
while($x < $count) 
    { 
    echo $files[$x]; 
    $len = strlen($files[$x]); 
    $sub = substr($files[$x], $len-7, 7); 
    if($sub === "abc.jpg") 
     { 
     rename($olddir.$files[$x],$newdir.$files[$x]); 
     } 
    $x++; 
    } 
?> 

Это переместит все файлы в папке 06, которые заканчиваются с abc.jpg в 07 папку.

Сообщите мне, если он не работает .... :)