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

在PHP中如何将小写字母'ß'转换为大写字母'ẞ'

PHP小写字符'ß'转换为大写'ẞ'的实现方案

问题原因

PHP自带的大小写转换函数默认遵循传统德语正字法规则:

  • 非多字节函数strtoupper()不识别德语特殊字符ß,因此转换后保持原字符不变
  • 多字节函数mb_strtoupper()默认会将ß转换为SS,这是传统德语的大写规则,而官方正式纳入标准的大写字符ẞ是2008年才生效的新规范,默认转换规则未适配该需求。

解决方案

方案1:自定义字符映射(兼容性最优)

不需要额外扩展,仅对ß做特殊替换后再执行常规大写转换,适合绝大多数场景:

function custom_strtoupper(string $input, string $encoding = 'UTF-8'): string
{
    // 优先替换特殊字符ß为大写ẞ
    $input = str_replace('ß', 'ẞ', $input);
    // 对剩余字符执行标准大写转换
    return mb_strtoupper($input, $encoding);
}

// 测试示例
echo custom_strtoupper('ß'); // 输出 ẞ
echo custom_strtoupper('straße'); // 输出 STRAẞE

方案2:使用Intl扩展(国际化场景推荐)

如果项目已经启用Intl扩展(PHP默认集成,绝大多数生产环境已开启),可以直接调用ICU库的德语区域大写转换规则,适配所有德语特殊字符的规范转换:

// 初始化德语区域大写转换器
$transliterator = Transliterator::create('de-DE_upper');
echo $transliterator->transliterate('ß'); // 输出 ẞ

注意事项

  • 所有操作需要保证字符串编码为UTF-8,避免出现乱码
  • 如果业务场景需要兼容传统德语大写规则(部分正式文档仍要求ß大写为SS),可根据需求选择对应的转换逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:09:04