Login lub e-mail HasÅ‚o   

Mniej znane opcje kontrolowania wyjścia (Output Buffering)

Odnośnik do oryginalnej publikacji: http://urzenia.net/295/output-buffering/
Mało kto wie, że funkcji z pakietu ob_* można użyć na przykład do konwersji z jednego kodowania do drugiego (np. strona de facto zapisana w ISO-8859-2 może p&...
Wyświetlenia: 735 Utworzony: 11/06/2006

MaÅ‚o kto wie, że funkcji z pakietu ob_* można użyć na przykÅ‚ad do konwersji z jednego kodowania do drugiego (np. strona de facto zapisana w ISO-8859-2 może pójść do przeglÄ…darki jako UTF-8), albo do automatycznej kompresji za pomocÄ… gzip, o ile przeglÄ…darka wspiera tÄ… metodÄ™.

Do zmiany strony kodowej, oprócz funkcji z pakietu ob_* potrzebujemy rozszerzenia albo iconv, albo mb. Najpierw trzeba zdefiniować, z jakiego kodowania chcemy "tÅ‚umaczyć”:

iconv_set_encoding('internal_encoding', $enc_from); //jeśli korzystamy z iconv
mb_internal_encoding($enc_from); //jeśli korzystamy z mbstring

gdzie $enc_from może być np. "ISO-8859-2″ (lista obsÅ‚ugiwanych kodowaÅ„ na stronie PHP (dla mbstring) lub na stronie biblioteki iconv (dla iconv).

Nastepnym krokiem jest zdefiniowanie kodowania wyjściowego:

iconv_set_encoding('output_encoding', $enc_to); //dla iconv
mb_http_output($enc_to); //dla mbstring

gdzie $enc_to w naszym przykÅ‚adzie to „UTF-8″.

Teraz pozostaje tylko na początku strony wstawić instrukcję uruchamiającą buforowanie wyjścia:

ob_start('ob_iconv_handler'); //w przypadku iconv
ob_start('mb_output_handler'); //gdy używamy mbstring

I już możemy się cieszyć zmienionym kodowaniem danej strony :)

Uruchomienie kompresji jest równie proste, trzeba tylko pamiÄ™tać aby byÅ‚ zaÅ‚adowany moduÅ‚ zlib. Samo uruchomienie kompresji to podanie funkcji ob_start() odpowiedniego parametru:

ob_start('ob_gzhandler');

Za pomocą instrukcji ini_set() możemy ustawić także stopień kompresji:

ini_set('zlib.compresss_level', $comp_level);

gdzie $comp_level jest to liczba caÅ‚kowita z zakresu od 0 do 9 (domyÅ›lnie 6).

Pozostaje jeszcze tylko jeden problem: jak połączyć razem konwersjÄ™ z jednego kodowania na drugie wraz z kompresjÄ…? ProszÄ™:

ob_start(array('ob_gzhandler', 'ob_iconv_handler'));

Ważna powyżej jest kolejność parametrów podawanych w tablicy: gdy podasz je w odwrotnej kolejnoÅ›ci, nie bÄ™dzie dziaÅ‚ać kompresja.


Podobne artykuły
7
wyświetlenia: 13757
6
wyświetlenia: 12902
5
wyświetlenia: 8124
5
wyświetlenia: 7999
6
wyświetlenia: 10232
5
wyświetlenia: 4863




Brak wiadomości


Dodaj swojÄ… opiniÄ™
W trosce o jakość komentarzy wymagamy od użytkowników, aby zalogowali się przed dodaniem komentarza. Jeżeli nie posiadasz jeszcze swojego konta, zarejestruj się. To tylko chwila, a uzyskasz dostęp do dodatkowych możliwości!
 
Autor
0
wyświetlenia: 577
Artykuł
Dodatkowe informacje
Nasza-Klasa.pl


O EIOBA
Artykuły
Odkrywaj
Publikuj
Społeczność
Statystyki
Użytkownicy online: 438
Zarejestrowani: 17.221
Komentarze: 39.400
Artykuły: 8.998
Książki
EIOBA Åšwiat

© 2005 grupa EIOBA.