[php] Hurtowa zmiana nazwy plików - warning no error

0

Witam. Mam pewien problem ze zmianą nazw plików w php.

$dane = explode("|", $_POST['dane']);
$i = 0;
while ($i < count($dane)-6)
	{
		$nazwa = $dane[$i+1];
		rename($dane[$i],$nazwa);
		$i = $i + 6;
	};
} else
{
echo '<form method="post" action="http://localhost/q/nazwa.php"><textarea name="dane"></textarea><input type="submit" value="Zmiana"></form>';

Skrypt dostaje dane w postaci "stara_nazwa.pdf|nowa_nazwa.pdf|a|b|c|d| gdzie a,b,c,d w tym skrypcie są niepotrzebne. Oczywiście dane ciągną się dalej dlatego licznik iteracji przeskakuje o 6 w górę.
Problem polega na tym, że zmienia się nazwa pierwszego pliku a potem dostaję masę komunikatów w takiej postaciWarning: rename( 2.pdf,jakaśtamnazwa.pdf) [function.rename]: No error in C:\wamp\www\q\nazwa.php on line 9
Nazwy wszędzie są w porządku zarówno plików które istnieją jak też nowe nazwy (nie zawierają znaków typu "/"). Nie muszę sprawdzać czy plik istnieje itp bo tak jak napisałem z tym jest wszystko ok na 100%.
Proszę o pomoc. Aha i jeszcze coś: jeżeli zamiast rename użyję copy to jest zupełnie tak samo tzn, pierwszy plik się kopiuje a potem warning: no error...

0

Ops coś źle skopiowałem, na początku jest jeszcze

if (isset($_POST['dane']))
{
0

A przy okazji co zrobić, żeby w nazwach plików były polskie znaki? Bo jeżeli teraz użyję

rename("2.pdf","ąśćźż.pdf")

to w nazwie są znaczki jakieś.

0

ustawić kodowanie pliku php na poprawne (kłania się dobry edytor php)

$dane = explode("|", $_POST['dane']);
$i = 0;
while ($i < count($dane)-6)
        {
                $nazwa = $dane[$i+1];
                rename($dane[$i],$nazwa);
                $i = $i + 6;
        };

cała ta idea jest dla mnie .. poryta..

zrób sobie mały debugging, najprościej - wywalaj co każdą pętlę wszystko po kolei w echo, przed wykonaniem..
a najlepiej po pierwszym explode rozdziel to sobie tak, żebyś miał tablicę, a każdym jej elementem - tablica z 6 elementami, będzie o wiele łatwiej "przelecieć taką tablicę"

0

Korzystam z Notepad++, kodowanie ustawiłem na UTF8(bez BOM) i rename dobrze wpisuje np "ł" i "ó" ale "ą" już nie działa. Więc na co mam zmienić?
A co do całego schematu to pokombinuje wieczorkiem.

0

na windowsie to oczywiście cudowne kodowanie Windows-1250

edit: w sumie lepiej zrób iconv - będzie łatwiej potem wywalić

0

W kodzie mam<meta http-equiv="content-type" content="text/html; charset=utf-8" />
W edytorze kodowanie to UTF-8

$nazwa = iconv("utf-8", "iso-8859-2", $nazwa);

Teraz właśnie jest "ół" dobrze a zamiast "ą" mam "±"

Jak mam to poustawiać, żeby było ok?

1 użytkowników online, w tym zalogowanych: 0, gości: 1