Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] pliki - usuwanie ogonków, Problem przy dużych plikach?
-Wieviór-
post 14.02.2008, 19:22:24
Post #1





Goście







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.

Ten post edytował Wieviór 14.02.2008, 19:23:38
Go to the top of the page
+Quote Post
Daimos
post 14.02.2008, 19:27:22
Post #2





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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

Ten post edytował my salsa 14.02.2008, 19:28:06


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
dziurson
post 14.02.2008, 19:27:36
Post #3





Grupa: Zarejestrowani
Postów: 145
Pomógł: 16
Dołączył: 19.07.2007
Skąd: Elbląg

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
-Wieviór-
post 14.02.2008, 19:32:28
Post #4





Goście







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... ?

Ten post edytował Wieviór 14.02.2008, 19:38:10
Go to the top of the page
+Quote Post
nowotny
post 14.02.2008, 19:44:41
Post #5





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


Masz w sumie trzy kodowania do rozpatrzenia: UTF-8, ISO-8859-2 i WIN-1250... zobacz jak masz zakodowane pliki...
Go to the top of the page
+Quote Post
-Wieviór-
post 14.02.2008, 19:51:16
Post #6





Goście







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.
Go to the top of the page
+Quote Post
nowotny
post 14.02.2008, 20:14:59
Post #7





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

Ostrzeżenie: (0%)
-----


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ć...

Ten post edytował nowotny 14.02.2008, 20:21:20
Go to the top of the page
+Quote Post
-Wieviór-
post 14.02.2008, 20:30:10
Post #8





Goście







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 ;]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.07.2025 - 01:26