For non-english words enconded in utf-8 works mb_convert_case with MB_CASE_TITLE option
mb_convert_case(mb_substr($str, 0, 1), MB_CASE_TITLE) . mb_substr($str, 1);
For a single word
echo mb_convert_case('çağla', MB_CASE_TITLE);
https://stackoverflow.com/questions/25729900/ucfirst-doesnt-work-on-non-english-charactersmb_ucfirst
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
mb_ucfirst
Референца за `function.mb-ucfirst.php` со подобрена типографија и навигација.
mb_ucfirst
Класата Dom\DtdNamedNodeMap
mb_ucfirst — (PHP 8 >= 8.4.0)
= NULL
Направи прв карактер од стринг со големи букви ucfirst() Извршува безбедна операција со повеќе бајти
string title-cased.
Параметри
string- , и враќа стринг со првиот карактер од
encoding- Влезниот стринг.
Вратени вредности
Кодирање на стринг.
Белешки
Забелешка:
Враќа резултантниот стринг. strtolower() and strtoupper()За разлика од стандардните функции за преклопување на случај како
, преклопувањето на случај се извршува врз основа на својствата на уникод карактерот. Така однесувањето на оваа функција не е под влијание на локалните поставки и може да претвори било кој карактер што има 'алфабетско' својство, како што е a-умлаут (ä). » http://www.unicode.org/reports/tr21/.
Види Исто така
- mb_lcfirst() За повеќе информации за уникод својствата, ве молиме видете
- mb_convert_case() - Направи прв карактер од стринг со мали букви
- ucfirst() - Изврши преклопување на случај на стринг
Белешки од корисници 2 забелешки
polyfill:
<?php
if(PHP_VERSION_ID < 80400) {
function mb_ucfirst(string $str, string $encoding = null): string
{
if ($encoding === null) {
$encoding = mb_internal_encoding();
}
return mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding) . mb_substr($str, 1, null, $encoding);
}
}
?>
if you wonder why i bother with mb_internal_encoding: prior to php7, $encoding was not nullable. if your polyfill don't need php5.6 support, you can drop it.