PHP mb_ucfirst a mb_lcfirst
# https://www.onge.cz/a3756ac8
V PHP funkce ucfirst, která převede první znak v řetězci na velké písmeno. Stejně jako ostatní PHP funkce pro zvětšování a zmenšování písmen si ale neporadí s diakritikou. PHP to řeší knihovnou Multibyte String Functions. Háček je, že zrovna funkce mb_ucfirst zde zastoupena není.
Není to ideální, ale dá se s tím něco dělat. Náhražková funkce může vypadat takto:
function mb_ucfirst($string, $encoding = null) {
if (is_null($encoding)) {
$encoding = mb_internal_encoding();
}
return mb_strtoupper(mb_substr($string, 0, 1, $encoding)).mb_substr($string, 1, null, $encoding);
}
Zmenšit první písmeno není potřeba tak často, ale můžeme se to stát. Stejně jako ucfirst, tak ani lcfirst nemá svoji mb_ variantu. Řešení je stejné, jen mb_strtoupper vyměníme za mb_strtolower.
function mb_lcfirst($string, $encoding = null) {
if (is_null($encoding)) {
$encoding = mb_internal_encoding();
}
return mb_strtolower(mb_substr($string, 0, 1, $encoding)).mb_substr($string, 1, null, $encoding);
}
Ano, bylo by krásné, kdyby PHP nabízelo i tyto mb_ funkce. Ještě krásnější by bylo, kdyby základní funkce pro práci s řetězci byli multibyte safe. Jenže jako to tak vypadá, ani jedno není na pořadu dne.