Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kodowanie polskich znaków nazw katalogów.
Forum PHP.pl > Forum > PHP
R_Przemek
  1. <?php
  2. $c = $_GET['c'];
  3. $dir = "produkty/".$c."/";
  4.  
  5. if (is_dir($dir)) {
  6.  if ($dh = opendir($dir)) {
  7.  while (($file = readdir($dh)) !== false) {
  8. if (($file != '.')&&($file != '..')) {
  9.  $filetypes = filetype($dir . $file);
  10.  if ($filetypes == 'file') { 
  11.  $data = explode(".", $file); 
  12.  $files = $dir.$file;  
  13.  if ($data[1] == "jpg") {
  14.  echo "<a href="$files"> <img src="$files" width="200px" height="200px"> </a>";
  15.  } 
  16.  if ($data[1] == "gif") {
  17.  echo "<a href="$files"> <img src="$files" width="200px" height="200px"> </a>";
  18.  }
  19.  if ($data[1] == "bmp") {
  20.  echo "<a href="$files"> <img src="$files" width="200px" height="200px"> </a>";
  21.  }
  22.  if ($data[1] == "JPG") {
  23.  echo "<a href="$files"> <img src="$files" width="200px" height="200px"> </a>";
  24.  } 
  25.  if ($data[1] == "GIF") {
  26.  echo "<a href="$files"> <img src="$files" width="200px" height="200px"> </a>";
  27.  } 
  28.  if ($data[1] == "BMP") {
  29.  echo "<a href="$files"> <img src="$files" width="200px" height="200px"> </a>";
  30.  }  
  31.  if ($data[1] == "png") {
  32.  echo "<a href="$files"> <img src="$files" width="200px" height="200px"> </a>";
  33.  }
  34.  if ($data[1] == "PNG") {
  35.  echo "<a href="$files"> <img src="$files" width="200px" height="200px"> </a>";
  36.  } 
  37.  }  
  38.  }
  39.  }
  40.  closedir($dh);
  41.  }
  42. }
  43. ?>


  1. <?php
  2. $dir = "produkty/";
  3.  
  4.  
  5. if (is_dir($dir)) {
  6.  if ($dh = opendir($dir)) {
  7.  while (($file = readdir($dh)) !== false) {
  8. if (($file != '.')&&($file != '..')) {
  9.  $filetype = filetype($dir . $file);
  10.  if ($filetype == 'dir') { 
  11. echo"  
  12.  
  13. <tr>
  14.  
  15. <td width="30px" height="11px"><img src="image/kw.gif"></td>
  16.  
  17. <td width="145px" height="25px"><font color="9d8a8a"><a href="?d=produkty&c=$file">$file</a></font></td>
  18.  
  19. </tr>  
  20.  
  21. <tr>
  22.  
  23. <td colspan="2"><p style="border-bottom-style: dashed; border-bottom-width: thin; border-bottom-color: acbd55; "></p></td>
  24.  
  25. </tr>";
  26.  
  27.  }
  28.  }
  29.  }
  30.  closedir($dh);
  31.  } 
  32. }
  33. ?>


Napisałem taki skrypt, tyle że mam z nim 2 problemy... Skrypt powinien działać następująco: w katalogu "produkty" tworzy się foldery i kopiuje do nich zdjęcia.

pierwszy problem odnosi się do pierwszego fragmentu kodu, mianowicie nie wszystkie zdjęcia są wyświetlane na stronie.
Niejestem w stanie sprawdzić od czego to zależy że jedno zdjęcie w formacie *.jpg jest wyświetlane a inne w tym samym formacie już nie .

Natomiast drugi problem jest z 2 fragmentem kodu, jeśli w katalogu "produkty" utworzy się folder o nazwie np. "ąśżźćłóę" to nie ma polskich znaków tylko krzaki.
Jak to poprawić ?
L_Devil
Jeżeli serwer chodzi na Linuxie to tego raczej nie poprawisz winksmiley.jpg Pamiętaj, że polskie znaczki w nazwie pliku w obcym (nie-polskim) systemie komputerowym muszą doprowadzić do zwisu winksmiley.jpg

A jeżeli pracujesz na polskim Windows Serverze, to upewnij się, że plik który zawiera nazwy plików jest kodowany w windows-1250 winksmiley.jpg
R_Przemek
no tak, zarówno localhost jak i serwer na którym publikuje skrypt są oparte o Linux-a
L_Devil
Sprawdź, czy masz tam zainstalowany polskie kodowanie znaków - jeżeli tak, to musisz upewnić się, że pliki skryptu zawierające nazwy folderów są tak samo kodowane, jak reszta systemu. A jeżeli nie, to musisz pogooglać, jak zainstalować polskie znaki smile.gif [Sam nie używałem Linuxa od pół wieku, więc ci nie powiem, bo nie pamiętam]. No i tylko pod warunkiem, że masz dostęp do shella serwera winksmiley.jpg



I druga sprawa:

Na co takie długie warunki? Nie prościej:

  1. <?php
  2. switch($data[1])
  3. {
  4. case "jpg":
  5. case "gif":
  6. case "bmp":
  7. echo "<a href="$files"> <img src="$files" width="200px" height="200px"> </a>";
  8.  
  9. break;
  10. default:
  11.  // die("Jakiś podejrzany błąd... ten plik nie ma rozszerzenia obrazku :-( ");
  12. }
  13. ?>
Lub jeszcze prościej, ale dłużej w jednej linijce:
  1. <?php
  2. if($data[1]=="jpg" || $data[1]=="gif" || $data[1]="bmp"...)
  3. {
  4. echo "<a href="$files"> <img src="$files" width="200px" height="200px"> </a>";
  5. }
  6. ?>


A sądzę, że ci nie wyświetla właśnie plików, które mają polską nazwę smile.gif
R_Przemek
A gdyby zapisać "krzak" jaki odpowiada każdej polskiej literze np: " Ĺ� " --> " ś "
a następnie podzielić wyraz na osobne litery i zrobić warunek że jeśeli podczas przeszukiwania liter w wyrazie napotka na taki "krzak" to dopasowywuje go do polskiznak.

ma takie coś prawo zadziałać questionmark.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.