ucfirst() 不能正常处理斯堪的纳维亚字符

ucfirst() not working properly with scandinavic characters

如何ucfirst()使用斯堪的纳维亚字符?

$str = "SÄKYLÄ";
echo ucfirst(strtolower($str)); //prints SÄkylÄ

一种可能是使用 mb_convert_case() 但我想知道是否可以使用 ucfirst()

$str = "SÄKYLÄ";
echo mb_convert_case($str, MB_CASE_TITLE, "UTF-8"); //prints Säkylä

字符串大写哪个函数更快?

您的问题不是 ucfirst(),而是 strtolower()。你必须使用 mb_strtolower(),让你的字符串小写,例如

echo ucfirst(mb_strtolower($str));
           //^^^^^^^^^^^^^^ See here

您还可以在 comments from the manual:

中找到 ucfirst() 的多字节版本

Simple multi-bytes ucfirst():

<?php

   function my_mb_ucfirst($str) {
       $fc = mb_strtoupper(mb_substr($str, 0, 1));
       return $fc.mb_substr($str, 1);
   }

手册中来自 plemieux 的代码comment