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

PHP实现:全大写单词转小写且保留首字母大写单词,现有代码失效

解决全大写单词转小写、保留合法首字母大写单词的问题

我懂你的困扰——原代码ucfirst(strtolower($string))会先把整个字符串转成全小写,直接毁掉了那些已经是「首字母大写其余小写」的正确单词,比如示例里的Sentence和Care都会被改成全小写,这显然不是你想要的效果。

要实现你的需求,我们需要精准定位全大写的单词,只把这些单词转成小写,同时保留原本格式正确的单词,最后再确保句子首字母大写。这里用正则表达式配合回调函数就能完美解决:

$string = 'THIS IS A Sentence that should be TAKEN Care of';

// 第一步:匹配所有全大写的单词,将其转为小写
$processedString = preg_replace_callback(
    '/\b[A-Z]+\b/', // 匹配由一个或多个大写字母组成的完整单词
    function($matches) {
        return strtolower($matches[0]);
    },
    $string
);

// 第二步:确保整个句子的首字母大写
$result = ucfirst($processedString);

echo $result; // 输出:This is a Sentence that should be taken Care of

代码解释

  • 正则/\b[A-Z]+\b/:\b代表单词边界,确保我们匹配的是完整的全大写单词,不会误触到混合大小写的单词(比如Sentence里的大写S不会被单独匹配);[A-Z]+匹配一个或多个连续的大写字母。
  • preg_replace_callback()会遍历字符串,只把匹配到的全大写单词转成小写,其他单词保持原样。
  • 最后用ucfirst()处理整个字符串,保证句子开头的首字母是大写的(比如原句开头的THIS转成this后,会被改成This)。

这样处理后,既把所有全大写的单词(包括单个大写字母A)转成了小写,又完美保留了原本格式正确的Sentence和Care,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Jens Törnell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:27:16