Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> kolejne pliki
raven22
post 9.05.2003, 17:15:46
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.05.2003

Ostrzeżenie: (0%)
-----


Jak wrzucic do kolejnych zmiennych zm2, zm2 ... wszystkie pliki w katalogu (na srvie) z rozszerzeniem .usr?? i jeszcze do zmiennej np. $zmi ich ilosc??


--------------------
Radio Maryja, Only Heavy Metal, 66,6FM
Go to the top of the page
+Quote Post
spenalzo
post 9.05.2003, 19:52:29
Post #2





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


[php:1:489f064a46]<?php
$kat="katalog/";
$dir=dir($kat);
$zmi=0;
$i=0;
while($file=$dir->Read())
{
$tmp=explode(".",$file);
if($tmp[1]=="usr" || $tmp[1]=="USR")
{
$i++;
${"zm".$i}=$tmp[0].".".$tmp[1];
$zmi++;
}
}
?>[/php:1:489f064a46]
Nie wiem, czy o to chodziło z tymi zmiennymi.
Poza tym nie wiem, czy dobrze zastosowałem ten kod ${"zm".$i} questionmark.gif


--------------------

Go to the top of the page
+Quote Post
Cudi
post 9.05.2003, 20:18:23
Post #3


Administrator planeta/IRC


Grupa: Przyjaciele php.pl
Postów: 385
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Zabrze

Ostrzeżenie: (0%)
-----


Napisałem kiedyś prostą funkcje (korzystając z komentarzy w manualu) która wrzuca pliki z danego katalogu do tablicy i ją zwraca:

[php:1:0cbc648442]<?php
function array_dir($dir_name = '.'){
$dir = opendir($dir_name);
$i = 0;
while($file = readdir($dir)){
if($i > 1) $array_dir[$i] = $plik;
$i++;
}
closedir($dir);

return $array_dir;
}
?>[/php:1:0cbc648442]

Dwa pierwsze 'pliki' są pomijane, bo są to '.' i '..' :] Żeby wyświetlić pliki z folderu np. pliki, wystarczy taki kod:

[php:1:0cbc648442]<?php
$pliki = array_dir('pliki');

foreach($pliki as $plik){
echo "$plik<BR>n";
}
?>[/php:1:0cbc648442]
Ilość plików można uzyskać używająć funkcji count():

[php:1:0cbc648442]<?php
$ilosc = count($pliki);
?>[/php:1:0cbc648442]
Go to the top of the page
+Quote Post
spenalzo
post 9.05.2003, 20:22:56
Post #4





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Dobra, ale ten skrypt nie rozpoznaje roszerzeń, a o to przecież chodziło.


--------------------

Go to the top of the page
+Quote Post
Cudi
post 9.05.2003, 20:24:17
Post #5


Administrator planeta/IRC


Grupa: Przyjaciele php.pl
Postów: 385
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Zabrze

Ostrzeżenie: (0%)
-----


[php:1:13d68d6122]<?php
function array_dir($dir_name = '.'){
$dir = opendir($dir_name);
$i = 0;
while($file = readdir($dir)){
$ext = explode('.', $file);
$cnt = count($ext);
$ext = $ext[--$cnt];
if($ext == 'usr') $array_dir[] = $file;
}
closedir($dir);

return $array_dir;
}

$pliki = array_dir();

foreach($pliki as $plik){
echo "$plik<BR>n";
}
echo "<HR>n";
echo 'Ilość plików z rozszerzeniem *.usr w folderze: '.count($pliki)."<BR>n";
?>[/php:1:13d68d6122]

Teraz funkcja pokaże pliki tylko z rozszerzeniem jakie sobie podasz. Puszczenie jej bez parametrów powoduje wyświetlenie plików z tego katalogu w którym leży plik z funkcją.
Go to the top of the page
+Quote Post
scanner
post 9.05.2003, 20:38:19
Post #6





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Cudi: lekka modyfikacja - czemu nie wywolac funkcji z dwoma parametrami?[php:1:5bf70a02ee]<?php
function array_dir($extension, $dir_name = '.'){
$dir = opendir($dir_name, $extension);
$i = 0;
while($file = readdir($dir)){
$ext = explode('.', $file);
$cnt = count($ext);
$ext = $ext[--$cnt];
if($ext == $extension) $array_dir[$i] = $file;
$i++;
}
closedir($dir);

return $array_dir;
}

$extension = 'txt';
$pliki = array_dir($extension /*, drugi parametr opcjonalny */);

foreach($pliki as $plik){
echo "$plik<BR>n";
}
echo "<HR>n";
echo 'Ilość plików z rozszerzeniem '.$extension.' w folderze: '.count($pliki)."<BR>n";
?>[/php:1:5bf70a02ee][/b]


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Jabol
post 9.05.2003, 20:41:03
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


Spenzalo, twój kod sie wywali na plikach typu plik.test.usr, natomiast kod Cudiego będzie wtedy działał!

PS.
Jak robicie tablice to, zamiast używać zmiennej $i (a tak wogóle, to ciekawe, czemu i), można użyć zapisu $array[]=ble, co dodaje ble według algorytmu[php:1:8ee68fd609]<?php
$array=array(1,2,3,4,5);
$array[count($array)]=$element;//doda $element do $array[5];

$array=array(1,2,3,4,5);
$array[]=$element;//doda element do $array[5]
?>[/php:1:8ee68fd609]
Go to the top of the page
+Quote Post
Cudi
post 9.05.2003, 20:43:35
Post #8


Administrator planeta/IRC


Grupa: Przyjaciele php.pl
Postów: 385
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Zabrze

Ostrzeżenie: (0%)
-----


No rzeczywiście, w sumie to teraz już z tego korzystam, ale tą funkcje pisałem tak dawno temu... W zasadzie to to przeróbka czyjejś funkcji, była gdzieś w komentarzach w maualu, ja tylko sobie dodałem żeby zapisywał do jednej tablicy. A dziś jak to kopjowałem to nawet sie nie zastanowiłem na optymalizacją winksmiley.jpg

PS.
A co jesli w nazwie pliku będzie kilka kropek ? :] Mój kod zadziała winksmiley.jpg
Go to the top of the page
+Quote Post
spenalzo
post 9.05.2003, 20:44:53
Post #9





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Scanner: co będzie jak roszerzenia będą miały różne wielkości liter? np. JPG, jpg ?
Jabol: "i" bo skrót od "index" :-)


--------------------

Go to the top of the page
+Quote Post
Cudi
post 9.05.2003, 20:46:29
Post #10


Administrator planeta/IRC


Grupa: Przyjaciele php.pl
Postów: 385
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Zabrze

Ostrzeżenie: (0%)
-----


Przecierz zostało napisane w pierwszym poście że ma to być *.usr, pewnie będą to pliki tworzone przez php, więc raczej rozszerzenia będą miały jednakowową wielkość (tak mi sie zdaje :])
Go to the top of the page
+Quote Post
spenalzo
post 9.05.2003, 20:48:03
Post #11





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat
Przecierz zostało napisane w pierwszym poście że ma to być *.usr, pewnie będą to pliki tworzone przez php, więc raczej rozszerzenia będą miały jednakowową wielkość (tak mi sie zdaje :])

A kto wie, czy nie będzie chciał tcyh plików skopiować na komputer, potem może je przetwarzać i skąd wiadomo, że przy wysyłaniu klient FTP mu ich nie zmieni?


--------------------

Go to the top of the page
+Quote Post
Cudi
post 9.05.2003, 20:52:36
Post #12


Administrator planeta/IRC


Grupa: Przyjaciele php.pl
Postów: 385
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Zabrze

Ostrzeżenie: (0%)
-----


Klient FTP ? Ja korzystam z Total Commandera i jeszcze mi sie nie zdarzyło żeby coś pomieszał :] Ale przecierz dopisanie do if'a || $ext == 'USR' nie jest takie znowu trudne :]
Go to the top of the page
+Quote Post
spenalzo
post 9.05.2003, 20:54:57
Post #13





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat
Klient FTP ? Ja korzystam z Total Commandera i jeszcze mi sie nie zdarzyło żeby coś pomieszał :] Ale przecierz dopisanie do if'a || $ext == 'USR' nie jest takie znowu trudne :]

Też z niego korzystam, ale kiedyś miałem CuteFTP i mi to gówno wszystkie rozszerzenia na duze litery zrobiło.

Dobra, może już starczy tej wymiany argumentów :-)


--------------------

Go to the top of the page
+Quote Post
scanner
post 9.05.2003, 20:55:36
Post #14





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Cytat
Scanner: co będzie jak roszerzenia będą miały różne wielkości liter? np.  JPG, jpg ?

My tu nie piszemy gotowców - tak trudno dodac strto*() ?


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Jabol
post 15.05.2003, 12:46:51
Post #15





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


a co powiecie na to:[php:1:2864d45535]<?php
foreach (glob("*.usr") as $filename) {
print "$filenamen";
}
?>[/php:1:2864d45535]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:18