«

»

Zmiana wielkości liter w PHP, a polskie znaki

PHPChyba wszyscy programiści PHP znają magiczne  funkcje operujące na stringach:

  •  strtoupper($str)
  • strtolower($str)

Służą one do zmiany wielkości liter w ciągu, pierwsza na duże litery, druga na małe.

Niestety funkcje te nie radzą sobie w przypadku kodowania UTF-8 z polskimi literami (i nie tylko polskimi).

Próba wykonania takiego kodu:

$a="ęóąśłżźćń";
$b="ĘÓĄŚŁŻŹĆŃ";
echo strtoupper($a);
echo "<br />";
echo strtolower($b);

Daje dosyć niespodziewane rezultaty w postaci:

ęãąśłżŪćń
���������

Z pomocą przychodzą nam funkcje, które również są obecne w php, a które nie maja problemów z różnymi kodowaniami:

mb_strtolower($str,[$encoding])
mb_strtoupper($str,[$encoding])

Jak łatwo się domyslić jako pierwszy argument podajemy test do zmiany, a jako drugi kodowanie.

echo mb_strtoupper($a,"UTF-8");
echo "<br />";
echo mb_strtolower($b,"UTF-8");

Teraz dostajemy poprawny wynik:

ĘÓĄŚŁŻŹĆŃ
ęóąśłżźćń

Jest jeszcze jedna funkcja którą warto znać w tym temacie. Może zrobić to samo co dwie poprzednie i dodatkowo zmienić na wielkie pierwsze litery wyrazów. Jej konstruktor jest następujący:

mb_convert_case ($str,$mode,[$encoding])

Pierwszy argument to znowu tekst do zmiany, drugi to tryb, a trzeci kodowanie. Wyjaśnienia wymaga tryb. W tym argumencie podajemy jedną z trzech stałych:

  • MB_CASE_UPPER – zmiana wszystkich liter na wielkie
  • MB_CASE_LOWER – zmiana wszystkich liter na małe
  • MB_CASE_TITLE – zmiana pierwszych liter w wyrazach na wielkie

Przykład użycia:

echo mb_convert_case("ęóąśłżźćń ĘÓĄŚŁŻŹĆŃ",MB_CASE_TITLE,"UTF-8");

Efekt:

Ęóąśłżźćń Ęóąśłżźćń
Podziel się na:
  • Drukuj
  • Facebook
  • Wykop
  • Google Bookmarks
  • Blogger.com
  • Blip
  • Digg
  • Dodaj do ulubionych
  • Gadu-Gadu Live
  • Grono.net
  • LinkedIn
  • Live
  • MySpace
  • Mój biznes
  • PDF
  • Poleć
  • RSS
  • Twitter
  • Śledzik

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć tych znaczników i atrybutów HTMLa: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>