You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中ucwords与strtolower组合失效,姓氏无法转首字母大写求助

问题解决:姓氏首字母未大写的修复方案

你的代码出现姓氏始终小写的问题,大概率是拼接字符串时的空格处理导致ucwords没有正确识别姓氏为独立单词(虽然示例代码逻辑看似没问题,但实际场景中可能存在隐藏的空格或字符干扰)。更可靠的做法是拆分后分别处理每个部分的大小写,再重新拼接:

$subjectnameraw = "SMITH, JOHN LEE";
// 按逗号拆分姓氏和名字
list($lastName, $firstName) = explode(',', $subjectnameraw);
// 去除各部分前后多余空格
$lastName = trim($lastName);
$firstName = trim($firstName);
// 将每个部分转为首字母大写格式
$lastName = ucwords(strtolower($lastName));
$firstName = ucwords(strtolower($firstName));
// 按「名字 姓氏」的顺序拼接
$subjectname = $firstName . ' ' . $lastName;

// 输出结果:John Lee Smith
echo $subjectname;

为什么原代码可能失效?

原代码依赖ucwords识别空格分隔的单词,但如果拼接后的字符串中姓氏前的空格被意外忽略(比如原数据逗号后无空格、或处理时多/少加了空格),ucwords会把名字末尾和姓氏连在一起视为一个单词,导致姓氏首字母无法大写。拆分后单独处理则完全规避了这个问题。

内容的提问来源于stack exchange,提问作者Cody_T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 22:40:39