raven22
9.05.2003, 17:15:46
Jak wrzucic do kolejnych zmiennych zm2, zm2 ... wszystkie pliki w katalogu (na srvie) z rozszerzeniem .usr?? i jeszcze do zmiennej np. $zmi ich ilosc??
spenalzo
9.05.2003, 19:52:29
[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}
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]
spenalzo
9.05.2003, 20:22:56
Dobra, ale ten skrypt nie rozpoznaje roszerzeń, a o to przecież chodziło.
[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ą.
scanner
9.05.2003, 20:38:19
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]
Jabol
9.05.2003, 20:41:03
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]
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ą
PS.
A co jesli w nazwie pliku będzie kilka kropek ? :] Mój kod zadziała
spenalzo
9.05.2003, 20:44:53
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" :-)
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 :])
spenalzo
9.05.2003, 20:48:03
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?
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 :]
spenalzo
9.05.2003, 20:54:57
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 :-)
scanner
9.05.2003, 20:55:36
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*() ?
Jabol
15.05.2003, 12:46:51
a co powiecie na to:[php:1:2864d45535]<?php
foreach (glob("*.usr") as $filename) {
print "$filenamen";
}
?>[/php:1:2864d45535]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.