как изменить название картинки при закачки

Фанат

oncle terrible
Команда форума
Mondain
массив - это переменная в пхп. определенного типа.
Если бы в $img содержалось все три имени ОДНОВРЕМЕННО, то это был бы массив. а у тебя в каждый момент времени имя в ней разное, но ОДНО.

Я, по ходу, понял, чего он не догоняет. Он не понимает, что такое цикл. Не в мысле в доке прочитать, а в смысле представить себе, как этот код работает.
 

Mondain

Новичок
*****
Да :(

А если так?

PHP:
$dir = '/home/steel/www/news/pics/1';
$img = 'php.gif';

function getName ($f) {
	if (!file_exists ($f))
		return $f;
	$counter = 1;
	$of = $f;
	do {
		$f = preg_replace ('#(\.[a-z]+$)#i', "$counter\\1", $of);
		$counter ++;
	} while (file_exists ($f));
	return $f;
}

echo getName ($dir."/".$img);
die ();
 

Фанат

oncle terrible
Команда форума
скажи, ты вообще с пхп как связан? он тебе нужен для решения каких-то конкретных задач, или интересен сам по себе?
если первое, то юзай tempnam И НЕ ПАРЬСЯ.
если второе - то с файлами тебе рано.
надо сначала осваивать циклы. раз ты не понимаешь такую вещь, как кусок кода, выполняющийся несколькоо раз.

ты, видимо, считаешь, что код
Код:
оператор 1
оператор 2
while() { 
  оператор 3
  оператор 4
}
оператор 5
оператор 6
так и выполняется - как написано сверху вниз, 1 2 3 4 5 6...

-~{}~ 18.10.07 17:55:

function getName тебе кто писал?
 

Фанат

oncle terrible
Команда форума
ну вот надо бы тебе с чего-нибудь попроще начинать.
а сейчас уж делай как угодно - лишь бы работало.

да, другу передай, что if + do .. while - это, на самом деле, один while
 

Mondain

Новичок
Я его код переделал под себя. Упростил.

PHP:
		if (file_exists ($f)) {
		
			$counter = 1; $of = $f;
			
			do {
				$f = preg_replace ('#(\.[a-z]+$)#i', "$counter\\1", $of);
				$counter ++;
			} while (file_exists ($f));
	
		} else {
		
		}
 

kruglov

Новичок
Ого, то он с циклами не дружит, то он регулярками пользуется...
 

Фанат

oncle terrible
Команда форума
скажи, и ты, и твой друг - правда не понимаете, что
if (file_exists ($f)) {
do {
$f = preg_replace ('#(\.[a-z]+$)#i', "$counter\\1", $of);
$counter ++;
} while (file_exists ($f));

}
это ровно то же самое, что
while (file_exists ($f)) {
$f = preg_replace ('#(\.[a-z]+$)#i', "$counter\\1", $of);
$counter ++;
}
?
 

Mondain

Новичок
PHP:
Если файл существует:
if (file_exists ($f)) {
        
            $counter = 1; $of = $f;
            то переменовываем до уникальнго имени
            do {
                $f = preg_replace ('#(\.[a-z]+$)#i', "$counter\\1", $of);
                $counter ++;
            } while (file_exists ($f));
    
        } else {
        если такого файла нет, то улоадим его
        }
А тут:

PHP:
Если файл существует, то переменовываем до уникального.
while (file_exists ($f)) {
$f = preg_replace ('#(\.[a-z]+$)#i', "$counter\\1", $of);
$counter ++;
}
А если файла нету? Ведь ничего не делает. Или я не прав? И не так понял.
 

Фанат

oncle terrible
Команда форума
о боже

-~{}~ 19.10.07 10:01:

если файл существует, то переименовываем.
а если файла нет, то улоадим

алгоритм на грани фантастики

-~{}~ 19.10.07 10:02:

другу покажи.
может, до него дойдет
 
Сверху