Çokbaytlı karakter kodlamaları için ucfirst () fonksiyonu

4 Cevap php

4 Cevap

Hiçbir mb_ucfirst function zaten fark ettik olarak vardır. You can sahte bir mb_ucfirst iki ile 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;
}

Necroposting için özür dilerim! Aksine, bu OP kadar ilginç değil, ama belki başkalarına ilginç olacak. Bu ucwords işlevine daha çok benzer, ancak bu, daha kısa bir çözüm:

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

Dize bir kelimeden oluşur yararlanmak gerekiyorsa, bu en iyi çözümdür.

Ben web sayfasında CP1250 kullanıyorum ve Ú mb_ucfirst için, çok az yükseltme işe yaramazsa:

  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 );
}

Burada başka bir çözümdür.

$str = 'hello';
$str[0] = mb_strtoupper($str[0]);
print $str;