Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodanie do kodu wył±czenia pol znaków
Forum PHP.pl > Forum > PHP
DreqX
Witam, mam upload i jest co¶ Ľle z polskimi znakami. Tzn nie działaj± prawidłowo jak sie wrzuci plik. Kod uploadu:
  1. <h1>Darmowy upload plików</h1>
  2. <p>
  3. Maksymalny rozmiar pliku:
  4. <?php
  5. $divd = 1024;
  6. $isize = $max_size / $divd;
  7. $isize2 = round($isize);
  8. echo $isize2.' KB';
  9. ?>
  10. <br />
  11. Dozwolone rozszerzenia:
  12. <?php
  13. foreach($dozwolone as $r)
  14. {
  15. echo '<u>'.$r.'</u> ';
  16. }
  17. ?>
  18. </p>
  19. <form enctype="multipart/form-data" action="index.php" method="POST">
  20. <input name="plik" type="file" />
  21. <input name="submit" onclick="document.getElementById('ladowanie').style.display='block'" type="submit" value="Wyslij plik" />
  22. </form>
  23. <div id="ladowanie" style="display:none;">
  24. <p>
  25. Proszę czekać! Trwa wgrywanie pliku!<br />
  26. <img src="loading.gif" />
  27. </p>
  28. </div>
  29. <?php
  30. if (isset($_POST['submit']))
  31. {
  32. $plik_tmp = $_FILES['plik']['tmp_name'];
  33. $plik_nazwa = $_FILES['plik']['name'];
  34. $plik_rozmiar = $_FILES['plik']['size'];
  35. if ($plik_rozmiar>$max_size)
  36. {
  37. echo '<font color="red">Plik jest za duży!</font><br>'; return 0;
  38. }
  39. if(is_uploaded_file($plik_tmp))
  40. {
  41. $roz = explode('.',$plik_nazwa);
  42. $roz = strtolower($roz[count($roz)-1]);
  43. $unikat = str_replace('.'.$roz, '', $plik_nazwa).'_'.substr(md5(time()), 0, 10);
  44. if(in_array($roz, $dozwolone))
  45. {
  46. move_uploaded_file($plik_tmp, "files/$unikat.$roz");
  47. chmod("files/$unikat.$roz", 0666);
  48. $adres = $domain.'/files/'.$unikat.'.'.$roz;
  49. echo '<p>Plik: <strong>'.$plik_nazwa.'</strong> o rozmiarze <strong>'.$plik_rozmiar.' bajtów</strong> został przesłany na serwer! </p>';
  50. echo '<table>
  51. <tr>
  52. <td>URL:</td>
  53. <td><input type="text" onClick="highlight(this);" value="'.$adres.'" style="width:400px;"></td>
  54. </tr>
  55. <tr>
  56. <td>HTML:</td>
  57. <td><input type="text" onClick="highlight(this);" value="<a href=\''.$adres.'\'>'.$plik_nazwa.'</a>" style="width:400px;"></td>
  58. </tr>
  59. <tr>
  60. <td>BBCode:</td>
  61. <td><input type="text" onClick="highlight(this);" value="'.$plik_nazwa.'" style="width:400px;"></td>
  62. </tr>
  63. </table>';
  64. }
  65. else echo '<font color="red">Niedozwolone rozszerzenie!</font><br>';
  66. }
  67. else echo '<font color="red">Wyst±pił bł±d!</font><br>';
  68. }
  69. }
  70. ?>

Proszę kogo¶ o dodanie do tego kodu, czego¶ co zamieni polskie znaki, spacje itp. na inne znaki, przyjmowane w uploadzie.
neverever
podpowiedĽ iconv + translit
http://php.net/manual/en/function.iconv.php
DreqX
Ok, znalazłem jeden kod, jednak dalej zamiana nie działa:

Kod
    $plik_tmp = $_FILES['plik']['tmp_name'];
    $plik_nazwa = $_FILES['plik']['name'];
    $plik_nazwa = strtr($plik_nazwa,"ˇĆĘŁŃӦݬ±ćęłń󶿼","ACELNOSZZacelnoszz");
    $plik_rozmiar = $_FILES['plik']['size'];


Proszę o poprawienie tak, aby zamieniało.
piotr94
dobrze, a ja poproszę o 50 zł ;-)
powiedz jakie masz pojęcie o php??
wystarczy za pomocom choćby str_replace zamieniać wszystko na znaki akceptowane przez serwer ;-)
DreqX
To mógłby¶ podać? Dla Ciebie to tylko jedna linijka kodu tongue.gif
bartg
Je¶li dla niego to jedna linijka kodu, to dla ciebie też...

Ludzie zrozumcie jak to brzmi:
Proszę o poprawienie tak, aby zamieniało.

Jak polecenie z roboty... A nie można: Niestety nie wiem jak to zrobić, czy kto¶ wie?
DreqX
Niestety nie wiem jak to zrobić, czy kto¶ wie?

pasuje? :x
piotr94
spokojnie biggrin.gif, po prostu jak pytasz na forum, to nie wydawaj poleceń ;-)
ja używałem czego¶ takiego:
  1. function clean_chars($text){
  2. $text=str_replace('ę','_',$text);
  3. $text=str_replace('Ę','_',$text);
  4. $text=str_replace('ó','_',$text);
  5. $text=str_replace('Ó','_',$text);
  6. $text=str_replace('±','_',$text);
  7. $text=str_replace('ˇ','_',$text);
  8. $text=str_replace('?','_',$text);
  9. $text=str_replace('·','_',$text);
  10. $text=str_replace('¶','_',$text);
  11. $text=str_replace('¦','_',$text);
  12. $text=str_replace('?','_',$text);
  13. $text=str_replace('?','_',$text);
  14. $text=str_replace('ł','_',$text);
  15. $text=str_replace('Ł','_',$text);
  16. $text=str_replace('ż','_',$text);
  17. $text=str_replace('Ż','_',$text);
  18. $text=str_replace('Ľ','_',$text);
  19. $text=str_replace('¬','_',$text);
  20. $text=str_replace('Ą','_',$text);
  21. $text=str_replace('?','_',$text);
  22. $text=str_replace('ć','_',$text);
  23. $text=str_replace('Ć','_',$text);
  24. $text=str_replace('ń','_',$text);
  25. $text=str_replace('Ń','_',$text);
  26. $text=str_replace(' ','_',$text);
  27. return($text);
  28. }

działa zarówno pod UTF-8 jak i ISO, zastępuje wszystkie "krzaki" znakami "_"
potem dajesz
  1. $plik_nazwa=clean_chars($_FILES['plik']['name']);

;-)
DreqX
Wtedy mi wyskakuje, że złe rozszerzenie
darko
tip of the day: funkcja str_replace przyjmuje jako parametr również tablicę i nie trzeba jej 25 razy wywoływać tongue.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.