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
如何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