переименовать все изображения в указанном каталоге - PullRequest
0 голосов
/ 10 апреля 2019

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

Это файлы изображений

Я попробовал эту ссылку ниже и изменил ее в соответствии со своими желаниями:

переименовать все файлы изображений в указанном каталоге

<?php
$dir = 'C:/xampp/htdocs/rename/fotos/all_fotos';
    $file = opendir($dir);
    $data = readdir($file);

    if(is_dir($dir)){
        echo $dir . '</br>';
        echo $file . '</br>';
        echo $data . '</br>';
        while(($data = readdir($file)) !== false){
            $info = pathinfo($data, PATHINFO_EXTENSION);
            if($info=='jpg'){
                if(strlen($data)==5){
                    rename($data, $dir . $data = 3 . substr($data, 0, -4) . '.jpg');
                }else if(strlen($data)==6){
                    rename($data, $dir . $data = substr($data, 0, -4) . '.jpg');
                }else{
                    echo "renaming didn't work, please try again <br/>";
                }
            }else{
                echo 'selected file is not a .jpg extension <br/>';
                echo basename(pathinfo($data, PATHINFO_BASENAME),'.jpg') . '</br>';
            }
        }echo $info;
    }else{
        echo dirname($dir) . 'wrong directory </br>';
    }
    closedir($file);
    ?>

ожидаемые результаты будут, например: «12340» станет «31234», а если длина равна 6, например: «123450», то он должен стать «12345», однако второй «echo $ file» внутри первого, если () часть возвращает «ID ресурса № 3»

Токовый выход

1 Ответ

0 голосов
/ 10 апреля 2019

Было бы интересно узнать больше о выходных данных, используя echo и var_dump (). Первый пункт: для функции rename () требуется полный путь для обоих аргументов (см. Официальный документ: https://www.php.net/manual/fr/function.rename.php). Второй: чтобы получить строковое имя файла, вам нужна функция basename () (* 1004) * Третий пункт: вы не учли расширение ".jpg" в strlen ... = 5 или strlen ... = 6. Последний пункт: использование релятивного пути для каталога (относительно вашего сценария переименования php):

//$dir = 'C:/xampp/htdocs/rename/fotos/all_fotos';
$dir = __DIR__.'/renameimg';
$file = opendir($dir);
$data = readdir($file);

if(is_dir($dir)){
echo '</br>dir : '.$dir;
echo '</br>file : '.$file;
echo '</br>data : '.$data;

 while(($data = readdir($file)) !== false){
 echo "<br/>";
 var_dump($data);
  if(is_dir("$dir/$data"))
      echo "<br/>Directory: ".$data;
   else if(is_file("$dir/$data"))
   echo "<br/>File: ".$data;

    $info = pathinfo($data, PATHINFO_EXTENSION);
    if($info=='jpg'){
  $filename = basename($data);
  echo "<br/>data length : ". strlen($data);
  echo "<br/>filename=basename(data) length : ". strlen($filename);
        if(strlen($filename)==9){
         rename("$dir/$data", "$dir/3".substr($filename, 0, -4) . '.jpg');
        }else if(strlen($filename)==10){
            rename("$dir/$data", "$dir/".substr($filename, 0, -4) . '.jpg');
        }else{
        echo "<br/>Length is not 5 or 6 : renaming didn't work !";
        }
    }else{
        echo 'selected file is not a .jpg extension <br/>';
    echo basename(pathinfo($data, PATHINFO_BASENAME),'.jpg').'</br>';
    }
   }echo $info;
}else{
echo dirname($dir) . 'wrong directory </br>';
}
 closedir($file);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...