我正在尝试在字符串中将第一个字母设为大写.它适用于英文字母,但不幸的是,它不适用于非英语字符
echo ucfirst("ça?la");
Run Code Online (Sandbox Code Playgroud)
在包括非英语字符在内的所有单词上正确使用ucfirst的正确方法是什么?
对于单个单词,正确的方法是:mb_convert_case用MB_CASE_TITLE在第二个参数.
mb_internal_encoding('UTF-8');
echo mb_convert_case('ça?la', MB_CASE_TITLE);
Run Code Online (Sandbox Code Playgroud)
因为它取决于charset和locale:某些语言将大写与titlecase区分开来.这里,选择更合适.
一个例子:digram字符dz.哪个变成DZ大写但Dz在标题中.这不是一回事.
注意:mb_convert_case+ MB_CASE_TITLE单独等同于ucwords.ucfirst的严格等同于:
return mb_convert_case(mb_substr($str, 0, 1), MB_CASE_TITLE) . mb_substr($str, 1);
Run Code Online (Sandbox Code Playgroud)
谢谢,我终于按照斯托尼的建议找到了这个工作功能。
function myucfirst($str) {
$fc = mb_strtoupper(mb_substr($str, 0, 1));
return $fc.mb_substr($str, 1);
}
Run Code Online (Sandbox Code Playgroud)