[ bugsu @ 01.08.2009. 11:11 ] @
Pozdrav...


Imam slike koje se vode imenom
ar_31_1
ar_31_2
ar_31_3
.....
ar_31_10


e sad meni treba

da izbrisem " ar_31_ " iz imena...da napravim folder " 31 " i da sve slike koje su bile pod " ar_31_x " prebacim u taj folder....

e sad posto nemam samo ar_31_X vec i ar_02_X , ar_56_x etc... meni to treba automatski sve....


snacu se sa rename move i sl ...ali kako automatski da napravim ?
[ kazil @ 01.08.2009. 12:30 ] @
Nem' vremena da pisem kod...

Skeniraj folder sa http://www.php.net/manual/en/function.scandir.php dobijes niz, prodjes kroz svaki element niza, sa http://www.php.net/manual/en/function.preg-match.php nadji delove imena fileova koje zelis, posle proveris da li takav folder postoji sa http://www.php.net/manual/en/function.is-dir.php ako ne postoji sa http://www.php.net/manual/en/function.mkdir.php napravis taj folder, i posle samo prebacis file koji zelis na mesto koje zelis :)

prosto :)
[ Nikola Poša @ 01.08.2009. 14:33 ] @
Ne moraš da ideš sa preg_match, možeš jednostavno substr-om da izvučeš tu srednju brojku, npr.: $folder = substr($fajl, strpos($fajl, '_') + 1, 2);

I sve bi to išlo u toj petlji nakon scandir-a, evo recimo ovako nekako:
Code:
$putanja = 'putanja/do/slika';
$fajlovi = scandir($putanja);

if (!empty($fajlovi)) {
   foreach ($fajlovi as $fajl) {
      if (substr($fajl, 0, 2) == 'ar') {
         $folder = $putanja . '/' . substr($fajl, strpos($fajl, '_') + 1, 2);

         if (!file_exists($folder)) {
             mkdir($folder);
         }

         move_uploaded_file($putanja . '/' . $fajl, $folder . '/' . $fajl);
         rename($folder . '/' . $fajl, $folder . '/' . substr($fajl, strrpos($fajl, '_') + 1));
      }
   }
}

Nisam probao, pisao sam iz glave, ali valjda bi to trebalo da ide tako nekako...
[ bugsu @ 01.08.2009. 21:35 ] @
hmm ima jedan mali problem....
Nikola je napisao (hvala ti) substr ali je lenght stavio 2 ....a ja imam slike od X do XXXX ...znaci od nula pa do npr. 9999
i onda sliku od ar_01_01 dobijem samo 01 ....to je problem....

inace lagano (misli osam da ce teze biti) nisam znao da ima "scandir" ....

btw ako nekom zatreba ovaj kod nikola je napravio gresku napisao je
Code:
rename($folder . '/' . $fajl, $folder . '/' . substr($fajl, strrpos($fajl, '_') + 1));


a treba
Code:
rename($putanja . '/' . $fajl, $folder . '/' . substr($fajl, strrpos($fajl, '_') + 1));
[ Nikola Poša @ 01.08.2009. 22:16 ] @
Citat:
bugsu: hmm ima jedan mali problem....
Nikola je napisao (hvala ti) substr ali je lenght stavio 2 ....a ja imam slike od X do XXXX ...znaci od nula pa do npr. 9999
i onda sliku od ar_01_01 dobijem samo 01 ....to je problem....

Nikakav problem, samo umesto 2 stavi strrpos($fajl, '_'), u prevodu: poslednja pozicija donje crte (obrati pažnju da je to strrpos, sa dva "r" ). Tako ćeš dobiti tačno ono što je između te dve donje crte.

Citat:
bugsu: btw ako nekom zatreba ovaj kod nikola je napravio gresku napisao je
Code:
rename($folder . '/' . $fajl, $folder . '/' . substr($fajl, strrpos($fajl, '_') + 1));


a treba
Code:
rename($putanja . '/' . $fajl, $folder . '/' . substr($fajl, strrpos($fajl, '_') + 1));

Pogreši čovek...
[ bugsu @ 01.08.2009. 22:53 ] @
huh sad cu biti pain in ass....
primetio sam da imam slike sa imenom ar_1036_0010.jpg
e sad ono 0010 mi smeta trebalo bi mi " 10 " ... kako se toga resiti ? mislim ono da prvo preimenujem pa tek onda ovo iznad da radim al me zanima dal moze sve onako djuture...
[ bugsu @ 02.08.2009. 08:12 ] @
Nisam siguran, ali mislim da bi ona intval() f-ja za string '0010' trebala da vrati 10. Tako da, nakon onog substring-ovanja (od poslednje pozicije donje crte pa do kraja), trebao bi da odradis i jedan intval svega toga, pa da onda tu vrednost nadovezes na $folder, u pozivu rename() f-je.
[ Nikola Poša @ 02.08.2009. 10:17 ] @
btw U mom pretposlednjem post-u sam napravio jednu grešku (uvek zaboravim da su drugi i treći argument f-je substr() početna pozicija i dužina, a ne početna pozicija i krajnja pozicija ), pa ako ti za ovo vreme nisi ispravio taj propust, evo kako bi trebao da izgleda taj deo:
Code:

$brojPoz = strpos($fajl, '_') + 1;
$folder = $putanja . '/' . substr($fajl, $brojPoz, strrpos($fajl, '_') - $brojPoz);

A nadam se da si uzeo u obzir i ovaj prethodni post, jer to sam takođe ja poslao, doduše sa mobilnog, ali sam zaboravio da se ulogujem, pa je ispalo "Gost".
[ bugsu @ 02.08.2009. 10:55 ] @
hvala ti ....sredio sam ja jos juce substr...
[ bugsu @ 14.08.2009. 16:53 ] @
uhuhu ...malo sam zglajznuo.. (a znao sam da ce tako biti )

pokrenuo scriptu ona lepo sve uradila /folder/01.jpg 02.jpg etc...

al eto meni problema....pa ja tek sad skontao da meni traba da idu brojevi 1.jpg 2.jpg bez nula :s

i kako ja sad odadim to kad je sve u folderima? jel moguce "dubinski" scandir da se uradi?


EDIT: resio sam tako sto sam dodao jos jedan foreach e sad po meni je to "lame" pa me znaima jel je i bilo drugogo resenja?

[Ovu poruku je menjao bugsu dana 14.08.2009. u 19:04 GMT+1]