PHP: bezogonkowo, czyli UTF-8 do plain-ASCII

2 Comments

Wrzucam to teraz, bo później mógłbym zapomnieć. Na grupie pl.comp.lang.php pojawiło się pytanie, jak zamienić polski tekst z polskimi ogonkami w standardzie UTF-8 na “zwykły” tekst, bez PLiterek.
Jak zwykle w takich przypadkach, pojawiła się odpowiedź, a ja, wzorem pracownika urzędu patentowego, palnąłem się w głowę, powtarzając “czemu ja tego nie napisałem wcześniej…”.

Użytkownik o nicku Exe Very Cute w odpowiedzi podał bardzo prosty kod, który może się przydać:

function foo($s)
{
  $data = array(
    "\xc4\x85" => "a", "\xc4\x84" => "A", "\xc4\x87" => "c", "\xc4\x86" => "C",
    "\xc4\x99" => "e", "\xc4\x98" => "E", "\xc5\x82" => "l", "\xc5\x81" => "L",
    "\xc3\xb3" => "o", "\xc3\x93" => "O", "\xc5\x9b" => "s", "\xc5\x9a" => "S",
    "\xc5\xbc" => "z", "\xc5\xbb" => "Z", "\xc5\xba" => "z", "\xc5\xb9" => "Z",
    "\xc5\x84" => "n", "\xc5\x83" => "N");
  return strtr($s, $data);
}

EDYCJA 09.05.2011: Jak zauważył Marcin w komentarzach, oczywiście warto spróbować najpierw użyć iconv().

Categories: PHP, Zabawy z kodem Tags: Tagi:,

2 thoughts on “PHP: bezogonkowo, czyli UTF-8 do plain-ASCII”

    1. @Marcin: Oczywiściem pod warunkiem “siedzenia” PHP na POSIXowym systemie, czyli – owszem – w większości przypadków, jednak ja przedstawiłem takie rozwiązanie z konkretnego powodu: ilekroć próbowałem wykorzystać iconv(), na niejednym systemie, efektem był albo brak efektu (konwersji), albo błąd braku iconv() :)

      Ale masz rację, powinienem wspomnieć, że najpierw warto sprawdzić iconv(), co niniejszym czynię.

Leave a Reply

Your email address will not be published. Required fields are marked *