ProgramingTip

멀티 바이트 문자 인코딩을위한 ucfirst () 함수

bestdevel 2020. 12. 26. 15:58
반응형

멀티 바이트 문자 인코딩을위한 ucfirst () 함수


나는 strtolower기능 에 대해 물었다 . 그러나 외국 문자를 사용할 때 대문자로 변환되지 않습니다.

 mb_strtolower($a,"utf8");

하지만 ucfirst()기능 현관 을 사용하려면 어떻게해야 우리합니까? 모드를 사용할 수 없습니다.


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

이것은 ucwords기능 과 다소 유사하지만 더 간결한 솔루션입니다 .

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

한 단어로 나누는 경우를 대문자로 표시해야하는 가장 좋은 솔루션입니다.


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

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

웹 페이지에서 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 );
}

/*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;
}

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

참조 URL : https://stackoverflow.com/questions/2517947/ucfirst-function-for-multibyte-character-encodings

반응형