@EVOSandru6

PHP — Как переименовать файлы во вложенных папках данной папки?

Имеется папка, внутри неё папки с целочисленными названиями. Непонятны 2 момента.

1. ошибка на данной строке, когда я пытаюсь войти во вложенную папку
$files = scandir($dir);

2. Как с помощью регулярки поменять строку вида
thumb_lalala.jpg
на
lalala_thumb.jpg

function printArr($arr){
    echo '<pre>';
        print_r($arr);
    echo '</pre>';
}
 
$papka    = 'images/product';
$tree = scandir($papka);
 
foreach($tree as $dir){
    if($dir != '.' && $dir != '..'){
        $files = scandir($dir);
        foreach($files as $file){
            $tmp = $file;
            rename($dir . $file, $dir . strtolower($file));
        }
    }
}
  • Вопрос задан
  • 2456 просмотров
Пригласить эксперта
Ответы на вопрос 2
Привет.

Для красивой рекурсивной итерации каталога с под каталогами тебе следует использовать:

$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR __ . '/images/product'), RecursiveIteratorIterator::SELF_FIRST);

Он будет возвращать
php.net/manual/ru/class.splfileinfo.php

/** @var $obj splFileInfo */
foreach($objects as $name => $obj){
   if (!$obj->isDir()) {
   }
}


Что бы переставить местами, я бы использовал подход с explode

/** @var $name array */
$name = explode(' ', $splFileInfo->getName())
$out = $name[1] . '_' . $name[0];
Ответ написан
OnYourLips
@OnYourLips
function printArr($arr){

Есть такая замечательная вещь, как XDebug.
Она позволит не мучаться с таким вот кодом.

А лучше заюзай это: https://github.com/symfony/Filesystem/blob/master/...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
27 сент. 2021, в 10:58
10000 руб./за проект
27 сент. 2021, в 10:41
25000 руб./за проект