Подтвердить что ты не робот

Функция ucfirst() для многобайтовых кодировок символов

Я спросил о strtolower функции. Но при использовании иностранных символов он не преобразует их в верхний регистр, поэтому я должен использовать:

 mb_strtolower($a,"utf8");

Но что мне делать, если я хочу использовать функцию ucfirst()? Я не нашел никакой подобной функции, где я могу установить тип кодирования.

4b9b3361

Ответ 1

Нет функции mb_ucfirst, как вы уже заметили. Вы можете подделать mb_ucfirst двумя mb_substr:

function mb_ucfirst($string, $encoding)
{
    $strlen = mb_strlen($string, $encoding);
    $firstChar = mb_substr($string, 0, 1, $encoding);
    $then = mb_substr($string, 1, $strlen - 1, $encoding);
    return mb_strtoupper($firstChar, $encoding) . $then;
}

Ответ 2

Это более сжатое решение, хотя оно довольно похоже на функцию ucwords:

$final_string = mb_convert_case($your_string, MB_CASE_TITLE, 'UTF-8');

Если вам нужно загладить строку, состоящую из одного слова, это лучшее решение.

Ответ 3

function mb_ucfirst($string)
{
    return mb_strtoupper(mb_substr($string, 0, 1)).mb_strtolower(mb_substr($string, 1));
}

Ответ 4

if (!function_exists('mb_ucfirst'))
{
    function mb_ucfirst($value)
    {
        return mb_strtoupper(mb_substr($value, 0, 1)) . mb_substr($value, 1);
    }
}

Ответ 5

Я использую cp1250 на веб-странице, а для Ú mb_ucfirst не работает, поэтому небольшое обновление:

  function mb_ucfirst($string)
{
    $main_encoding = "cp1250"; 
    $inner_encoding = "utf-8";
    $string = iconv($main_encoding, $inner_encoding , $string );
    $strlen = mb_strlen($string);
    $firstChar = mb_substr($string, 0, 1, $inner_encoding);
    $then = mb_substr($string, 1, $strlen - 1, $inner_encoding);
    return $string = iconv($inner_encoding, $main_encoding , mb_strtoupper($firstChar, $inner_encoding) . $then );
}

Ответ 6

/*This worked correctly for me*/
function mb_ucfirst($string, $encoding='UTF-8')
{
    $firstChar = mb_substr($string, 0, 1, $encoding);
    $then = mb_substr($string, 1, mb_strlen($string, $encoding)-1, $encoding);
    return mb_strtoupper($firstChar, $encoding) . $then;
}

Ответ 7

Рабочая версия (версия для тестирования) для современного PHP:

<?php

function mb_ucfirst($value)
{
    $firstLetter = mb_strtoupper(mb_substr($value, 0, 1, 'UTF-8'), 'UTF-8');
    $otherLetters = mb_substr($value, 1, null, 'UTF-8');

    return $firstLetter . $otherLetters;
}

echo mb_ucfirst('żółta źółć');
var_dump('Żółta źółć' === mb_ucfirst('żółta źółć'));

Ответ 8

Это самый короткий, который я могу выяснить... извлечь первое слово, применить MB_CASE_TITLE и заменить его оригиналом.

function mb_ucfirst($str=''){ $str2=explode(" ",$str); return str_replace($str2[0],mb_convert_case($str2[0], MB_CASE_TITLE, "UTF-8"),$str); }

Ответ 9

$string = trim(preg_replace('/\s+/', ' ', $string));
$string_ar = explode(' ', mb_strtolower($string,'utf-8'));

foreach($string_ar as $key => $value {
  $string_str .= mb_convert_case(mb_substr(trim($value), 0, 1), MB_CASE_TITLE, 'utf-8')
    . mb_substr(trim($value),1)
    . ' ';
}

$string = trim($string_str);

Ответ 10

private static function mb_ucfirst($string)
{
    $first = mb_strtoupper($string[0] . $string[1]);
    $string[0] = $first[0];
    $string[1] = $first[1];
    return $string;
}

Ответ 11

private static function mb_ucfirst($str)
{
    if (!$str) {
        return;
    }

    $first = mb_strtoupper($str[0] . $str[1]);
    $str[0] = $first[0];
    $str[1] = $first[1];
    return $str;
}

Ответ 12

Это функция:

function FirstCharString($string){
        $aString = explode(' ', $string);
        $sReturn = '';
        foreach ($aString as $k=>$fString) {
            $sFirst = mb_strtoupper(mb_substr($fString, 0, 1));
            $sMore = mb_strtolower(mb_substr($fString, 1));
            $sReturn .= $sFirst.$sMore.' ';
        }
        return trim($sReturn);
    }

Ответ 13

Пойдите с этим помощником:

$text = "ρασąŽUOlas ΔρασΥκελίζει niekπέΥąΥžuoρ  kυνόσ";
$ucfirsted_text = mb_convert_case(mb_substr($text,0,1), MB_CASE_TITLE, "UTF-8").mb_substr($text,1);

echo $ucfirsted_text; //will print you "ΡασąŽUOlas ΔρασΥκελίζει niekπέΥąΥžuoρ  kυνόσ"