Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kolejne pliki
Forum PHP.pl > Forum > PHP
raven22
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
[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
Cudi
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
Dobra, ale ten skrypt nie rozpoznaje roszerzeń, a o to przecież chodziło.
Cudi
[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
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
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]
Cudi
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
spenalzo
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" :-)
Cudi
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
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?
Cudi
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
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
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
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.