PHP переименовывает файлы из CSV - PullRequest
1 голос
/ 25 февраля 2011

Я работаю над некоторым PHP, чтобы переименовать фотографии в каталоге во что-то еще, основываясь на данных из файла CSV.CSV имеет три столбца: номер, имя и фамилия.Оригинальные имена фотографий: « FirstName LastName .jpg».Новые имена должны быть " Number .jpg".Я делаю это, перебирая строки CSV, создавая старое имя, соединяя FirstName и LastName, создавая новое имя, получая номер и переименовывая файлы.Однако у меня есть две проблемы:

Первая - это скорее ошибка, но она может быть существенной.Когда я повторяю $ oldname , между именем и точкой перед расширением возникает разрыв строки, даже если я указал ее как одну строку без разрывов.это никогда не работает.Он всегда возвращает «НЕ переименовывать».Я изменил права доступа к файлам и содержащим их папкам, но это все равно не работает.Спасибо заранее, если вы можете помочь.

<?php
$dir = "*Dir to phptos*";
$csv = fopen("filename.csv", "r") or die("no csv file");
//$ext = ".txt";

while(!feof($csv)) {
$line = fgets($csv);
$names = explode(",", $line);

//echo $names[2];

$oldname = $dir.$names[1]." ".$names[2].".txt";
$newname = $dir.$names[0].".txt";

if (is_file($oldname)) {
rename($oldname, $newname);

echo "renamed '".$oldname."' to '".$newname."'<br/>";
} else {
echo "DID NOT rename '".$oldname."'<br/>\n";
//echo "$oldname";
}
}

fclose($csv);
?>

Ответы [ 3 ]

2 голосов
/ 25 февраля 2011

Это должно работать.

$oldname = "$dir"."$names[1] $names[2]".".txt";
$newname = "$dir"."$names[0]".".txt";
0 голосов
/ 25 февраля 2011
  1. Вы должны иметь $ dir, а затем разделитель каталогов (/ или \).
  2. Вы получаете разрыв строки, потому что разрыв строки в стандарте CSV равен \ r\ n в то время как разрыв строки в php обычно равен \ n (если директива auto_detect_line_endings не установлена).В этом случае вы получаете \ r в ваших строках.Вам нужно обрезать () (http://php.net/manual/en/function.trim.php) или

    preg_replace ('/ \ s * /', '\', $ line); // пробел - значение второго параметра

все проанализированные данные. Вы сможете переименовывать файлы после избавления от специальных символов из ваших имен файлов.

0 голосов
/ 25 февраля 2011
  1. Убедитесь, что $dir установлен правильно. Запустите is_dir (), чтобы убедиться, что он у вас есть.
  2. В вашем коде $oldname и $newname заканчиваются на .txt, но вы описали их как .jpg в своем описании.
  3. Попробуйте очистить кеш статистики в начале вашего скрипта.
...