Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] pliki - usuwanie ogonków
Forum PHP.pl > Forum > Przedszkole
Wieviór
Sprawa ma się tak, ściągam Greys Anatomy i nagrywam dla mamy do odtwarzacza, który odpala napisy z pliku txt, problem ma tylko taki jak chyba każdy inny na rynku, nie czyta polskich znaków. Stwierdziłem więc, że napiszę skrypt, który będzie zamieniał wszystkie ś, ć, ą itp. na ich "znormalizowane" odpowiedniki, tj. odpowiedni s, c, ą itp.

Kod mam taki:

  1. <html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2">
  4. </head>
  5. <body>
  6. <?
  7. $ogonki = array(
  8. 'ą' => 'a',
  9. 'ć' => 'c',
  10. 'ę' => 'e',
  11. 'ł' => 'l',
  12. 'ń' => 'n',
  13. 'ś' => 's',
  14. 'ó' => 'o',
  15. 'ź' => 'z',
  16. 'ż' => 'z',
  17.  
  18. 'Ą' => 'A',
  19. 'Ć' => 'C',
  20. 'Ę' => 'E',
  21. 'Ł' => 'L',
  22. 'Ń' => 'N',
  23. 'Ś' => 'S',
  24. 'Ó' => 'O',
  25. 'Ź' => 'Z',
  26. 'Ż' => 'Z',
  27. );
  28.  
  29. $skip = Array();
  30. $skip[] = '.';
  31. $skip[] = '..';
  32. $skip[] = 'Thumbs.db';
  33.  
  34. $katalog = opendir('pliki');
  35. while ($file = readdir($katalog))
  36. {
  37. if (!in_array($file, $skip)) 
  38. {
  39. $plik = fopen ('pliki/'.$file, 'r+');
  40. $plik2 = fopen ('pliki2/'.$file, 'w+');
  41.  
  42. $zawartosc = fread ($plik, '900000000');
  43.  
  44. $przerob = strtr ($zawartosc, $ogonki);
  45.  
  46. if (fwrite ($plik2, $przerob)) { echo 'OK! W pliku <b>'.$file.'</b> ogonki zostały usunięte!<br>'; } else { echo 'Nie udało się coś :(<br>'; }
  47.  
  48. fclose ($plik);
  49. fclose ($plik2);
  50. }
  51. }
  52. closedir ($katalog);
  53. ?>
  54. </body>
  55. </html>


No i w sumie wszystko działa, nie jestem pewien czy to dobrze generalnie robię, ale na plikach zbytnio nie umiem pracować, więc i tak jestem z rezultatu zadowolony.

Ale jest jeden problem, przy dużych plikach jakby skrypt się gubi i już nie zamienia wszystkiego... :/ Konkretniej - na problemy z ś i ą, czyli coś tu jest nie tak z kodowaniem, bo z ś i ą to zawsze są problemy :/ ... no ale jak napiszę sobie plik costam.txt z treścią powiedzmy:

Kod
ś, ą, ł, ń, Ź, costam dalej


To otrzymuję:

Kod
s, a, l, n, ź costam dalej


Czyli wszystko jest ok, dopóki plik jest mały chyba.
Daimos
sprobuj uzyc tej funkcji
tylko nie zapomnij wpisac znakow w odpowiednim kodowaniu
najlepiej sprobj w wielu roznych, chyba ze masz pewnosc co do kodowania w plikach, ktore chcesz modyfikowac
dziurson
Ja używam do zmiany znaków czego¶ takiego:

  1. <?php
  2. $zmienna2 = strtr($zmienna1, "±ćęłń󶿥·ĆĘŁŃӦݬ", "acelnoszz_ACELNOSZZ");
  3. ?>


gdzie $zmienna1 to ci±g do przerobienia
Wieviór
Cytat(my salsa @ 14.02.2008, 21:27:22 ) *


Próbowałem tą funkcją, nic nie pomaga.

Kodowanie, no właśnie... tylko to są wszystko napisy w pliku txt, więc niewiele to raczej ma znaczenia chyba (prawda...?)

EDIT: Jeszcze mam taki problem z tym skryptem, że czasem jakby ma mnie w d*pie i chociaż pokazuje się "OK! W pliku ..." to na serwerze tego nowego pliku nie ma, dopiero jak kilka razy odświeżę to jest... ?
nowotny
Masz w sumie trzy kodowania do rozpatrzenia: UTF-8, ISO-8859-2 i WIN-1250... zobacz jak masz zakodowane pliki...
Wieviór
Cytat(nowotny @ 14.02.2008, 21:44:41 ) *
Masz w sumie trzy kodowania do rozpatrzenia: UTF-8, ISO-8859-2 i WIN-1250... zobacz jak masz zakodowane pliki...


Bardzo mam chyba głupie pytanie, jak sprawdzić kodowanie pliku txt? Bo próbowałem np. go otworzyć i zapisać w Unicode, ale to nic nie dało.
nowotny
Nigdy się tym nie bawiłem ale możesz sprawdzić funkcję mb_detect_encoding" title="Zobacz w manualu PHP" target="_manual... lub ewentualnie uzupełnić twoj± tablicę o krzaczki obu polskich kodowań (co z UTFem nie mam pojęcia :/)...

Kiedy¶ napisałem co¶ takiego: src.zip... obejmuje to te dwa polskie kodowania... tylko musisz to otwierać notatnikiem... on jest za głupi na to żeby przekonwertować znaczki a niektóre edytory mog± to zrobić...
Wieviór
Cytat(nowotny @ 14.02.2008, 22:14:59 ) *
lub ewentualnie uzupełnić twoj± tablicę o krzaczki obu polskich kodowań (co z UTFem nie mam pojęcia :/)...


Nie pomy¶lałem o takim prostym rozwi±zaniu. Dzięki ;]
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.