Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: "problem" z explode
Forum PHP.pl > Forum > Przedszkole
cornholio666
Mam takie cos:
gdzie $dir jest katalogiem w ktorym znajduja sie pliki
  1. <?php
  2.  if($dh = @opendir($dir))
  3.  {
  4.  while(false !== ($file = readdir($dh)))
  5.  {
  6.  if($file != '.' && $file != '..')
  7.  {
  8.  $allfiles = explode('.', $file);
  9.  if($jpg)
  10.  {
  11.  if($allfiles[1] == 'jpg' || $allfiles[1] == 'JPG')
  12.  {  
  13.  $images[$i] = $file;
  14. $i++;
  15.  }
  16.  }
  17.  }  
  18.  }
  19.  }
  20. ?>

niby skrypt wybiera same jpg ale jak w katalogu znajduje sie plik obraz.jpg.psd interpretuje go jako jpg jak sie zabezpieczyc przed takim czyms?
shima
Nie sprawdzaj $allfiles[1] ale $allfiles[count($allfiles) -1]
Oczywiście policzyć możesz wcześniej
kantaro
Spróbuj przepuścić $i przez funkcje sprintf(); w taki sposób
  1. <?php 
  2.  if($allfiles[1] == 'jpg' || $allfiles[1] == 'JPG')
  3.  {  
  4.  $images[$i] = $file;
  5. sprintf(&#092;"%01.2f\", $i);
  6.  $i++;
  7.  }
  8.  
  9. ?>
rogrog
najlepiej użyć służącej do tego funkcji php - pathinfo" title="Zobacz w manualu PHP" target="_manual
cornholio666
ok sposob shima poszedl (jest dla mnie zrozumialy) ale pojawil sie jeszcze jeden problem: nie chce mi wyswietlac jpgów w ktorych nazwa zawiera polskie litery. Mozna cos z tym zorbic? i dlaczego sie tak dzieje


I jeszcze cos dziwnego: obie przegladarki (IE i Opera) nie wyswietlaja mi plików ktore zawieraja polskie znaki ponadto IE (w przeciwienstwie do operry) nie wyswietla niektorych obrazków, a w tych obrazkach nie widze niczego dziwnego..
D4rky
nigdy nie wyswietli, bo w UNIXie,LINUXie i kazdym innym nie-winshitowym sysie CHYBA nie dziala (zobacz se chocby dlaczego adresy nie maja PL liter). po prostu pozmieniaj, ja bym tak zrobil

a ja DOSowiec jestem to nawet sie staram zeby mialy ok. 8 znakow biggrin.gif
tiraeth
exif_imagetype" title="Zobacz w manualu PHP" target="_manual

jeżeli zwróci IMAGETYPE_JPEG to wyświetlaj plik...

czyli:
  1. <?php
  2. if($dh = @opendir($dir))
  3. {
  4.  while(false !== ($file = readdir($dh)))
  5.  {
  6. if($file != '.' && $file != '..' && exif_imagetype($file) == 'IMAGETYPE_JPEG')
  7. {
  8.  $images[] = $file;
  9. }  
  10.  }
  11. }
  12. closedir($dir);
  13. ?>


Tak ładnie zmiejszony kod i robi dosłownie to samo smile.gif
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.