Daniel Częstki

jestem OK

Konwersja polskich znaków w PHP bez użycia funkcji iconv

Bardzo często zdarza się, że chcemy sobie przekonwertować polskie znaki np. z UTF-8 do ISO-8859-2. W prosty sposób można to zrobic za pomocą funkcji iconv, jednak jak się okazuje nie zawsze jest ona włączona.

Poniżej zamieszczam kawałek kodu, który pozwala konwertować polskie znaki pomiędzy 3 różnymi kodowaniami: UTF8, ISO-8859-2, WIN-1250

<?php
define('UTF8_TO_ISO88592', 1);
define('ISO88592_TO_UTF8', 2);
define('WIN1250_TO_UTF8', 3);
define('UTF8_TO_WIN1250', 4);
define('ISO88592_TO_WIN1250', 5);
define('WIN1250_TO_ISO88592', 6);

function plCharset($string, $type = ISO88592_TO_UTF8) {

$win2utf = array(
"\xb9" => "\xc4\x85", "\xa5" => "\xc4\x84",
"\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86",
"\xea" => "\xc4\x99", "\xca" => "\xc4\x98",
"\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81",
"\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93",
"\x9c" => "\xc5\x9b", "\x8c" => "\xc5\x9a",
"\xbf" => "\xc5\xbc", "\x8f" => "\xc5\xbb",
"\x9f" => "\xc5\xba", "\xaf" => "\xc5\xb9",
"\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83");

$iso2utf = array(
"\xb1" => "\xc4\x85", "\xa1" => "\xc4\x84",
"\xe6" => "\xc4\x87", "\xc6" => "\xc4\x86",
"\xea" => "\xc4\x99", "\xca" => "\xc4\x98",
"\xb3" => "\xc5\x82", "\xa3" => "\xc5\x81",
"\xf3" => "\xc3\xb3", "\xd3" => "\xc3\x93",
"\xb6" => "\xc5\x9b", "\xa6" => "\xc5\x9a",
"\xbc" => "\xc5\xba", "\xac" => "\xc5\xb9",
"\xbf" => "\xc5\xbc", "\xaf" => "\xc5\xbb",
"\xf1" => "\xc5\x84", "\xd1" => "\xc5\x83");

$win2iso = array(
"\xa5" => "\xa1", "\x8c" => "\xa6",
"\x8f" => "\xac", "\xb9" => "\xb1",
"\x9c" => "\xb6", "\x9f" => "\xbc");

switch ($type) {
case UTF8_TO_ISO88592:
$tab_conw = array_flip($iso2utf); break;

case ISO88592_TO_UTF8:
$tab_conw = $iso2utf; break;

case WIN1250_TO_UTF8:
$tab_conw = $win2utf; break;

case UTF8_TO_WIN1250:
$tab_conw = array_flip($win2utf); break;

case ISO88592_TO_WIN1250:
$tab_conw = array_flip($win2iso); break;

case WIN1250_TO_ISO88592:
$tab_conw = $win2iso; break;
}

return strtr($string, $tab_conw);

}
?>

Komentarze

Aktualnie 1 komentarz | dodaj swój komentarz
  1. proste i przydtne.dzieki

    Komentarz dodany przez AoL dnia 14-5-2009

DODAJ SWOJĄ OPINIĘ

Najnowsze wpisy