mb_convert_case

funkcja

Zmienia wielkość liter w ciągu znaków z pełną obsługą Unicode, w tym polskich znaków (ą→Ą, ę→Ę itd.). Obsługuje tryby UPPER, LOWER i TITLE.

mb_convert_case(string $string, int $mode, ?string $encoding = null): string

mb_convert_case to wielobajtowy odpowiednik strtoupper/strtolower, który poprawnie obsługuje znaki spoza ASCII — w tym polskie ą, ę, ó, ś, ź, ż. Dostępne tryby:

| Stała | Opis | |---|---| | MB_CASE_UPPER | Zamienia wszystkie litery na duże | | MB_CASE_LOWER | Zamienia wszystkie litery na małe | | MB_CASE_TITLE | Pierwsza litera każdego słowa duża |

Zwykłe ucwords nie radzi sobie z polskimi znakami na początku słowa — łódź zamieni w łódź zamiast w Łódź. mb_convert_case z MB_CASE_TITLE robi to poprawnie.

<?php
declare(strict_types=1);

$tytul = 'łódź nad wartą';

echo ucwords($tytul);                                        // wynik: łódź Nad Wartą  ← błąd!
echo mb_convert_case($tytul, MB_CASE_TITLE, 'UTF-8');       // wynik: Łódź Nad Wartą  ✓
echo mb_convert_case($tytul, MB_CASE_UPPER, 'UTF-8');       // wynik: ŁÓDŹ NAD WARTĄ
echo mb_convert_case('ŁÓDŹ KRAKÓW', MB_CASE_LOWER, 'UTF-8'); // wynik: łódź kraków

Jeśli nie podasz $encoding, PHP użyje wewnętrznego kodowania ustawionego przez mb_internal_encoding(). Najczęściej jawnie podawaj 'UTF-8', żeby uniknąć niespodzianek.

📘 Naucz się w lekcji →