ucfirst()函数用于多字节字符编码

我问过strtolowerfunction。 但是当使用外来字符时,它不会将它们转换成大写字母,所以我必须使用:

  mb_strtolower($a,"utf8"); 

但是,如果我想使用ucfirst()函数,我该怎么办? 我还没有find任何类似的function,我可以设置编码types。

没有mb_ucfirst函数,就像你已经注意到的那样。 你可以用两个mb_substr伪造一个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; } 

请原谅我! 相反,这对于OP来说并不是那么有趣,但也许这对其他人来说是有趣的。 这是更简洁的解决scheme,虽然它与ucwordsfunction相当相似:

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

如果您需要大写字母组成的string,这是最好的解决scheme。

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

这是最短的,我可以找出…提取第一个字,应用MB_CASE_TITLE,并将其replace为原始。

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

现代PHP的工作(unit testing)版本:

 <?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 źółć')); 

这是function:

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

跟这个伴侣一起去吧

 $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υνόσ"