PHP 7.3在字符串处理上实现四项实质性升级:一是mbstring大小写函数全面支持Unicode 11的Case-Folding规则;二是Heredoc/Nowdoc结束标识符支持同行与缩进;三是负数偏移在mb_*函数中行为更稳定统一;四是允许字符串字面量参与instanceof检查。

PHP 7.3 在字符串处理方面相比 7.2 有几项明确增强,主要集中在多字节支持、语法灵活性和 Unicode 兼容性上,不是小修小补,而是面向现代国际化应用的实质性升级。
多字节字符串大小写转换更准确
PHP 7.3 更新了所有 mbstring 大小写相关函数(如 mb_strtolower()、mb_strtoupper()、mb_convert_case()),全面支持 Unicode Case-Folding 和 Case-Mapping 规则(基于 Unicode 11 标准)。这意味着:
- 土耳其语的 dotted/dotless i(İ/i vs. I/ı)能正确转换
- 德语 ß 在转大写时会变成 "SS"(而非 "ß"),符合标准行为
- 希腊语、格鲁吉亚语等更多语言的大小写逻辑被覆盖
PHP 7.2 的 mbstring 实现仍基于较旧的 Unicode 版本,对上述边缘情况支持不足或不一致。
Heredoc/Nowdoc 语法更灵活
PHP 7.3 允许 Heredoc 和 Nowdoc 结束标识符不再必须独占一行,也支持缩进:
立即学习“PHP免费学习笔记(深入)”;
- 结束标记可与前面内容同行(只要后跟分号或逗号等合法符号)
- 若结束标记带缩进,文档内每行会自动去除相同前导空白
- 可在数组、函数调用等上下文中直接使用,无需额外换行
例如以下代码在 7.3 合法,在 7.2 会报语法错误:
[10, 20, <<<STRHello World
Next line
STR, 42]
字符串偏移支持负数索引(延续自 7.1,但 7.3 更稳定)
虽然负数字符串偏移(如 $str[-1] 表示最后一个字符)从 PHP 7.1 就已引入,但 PHP 7.3 进一步统一了其在各类字符串函数中的行为,尤其在 mb_* 函数中表现更一致。例如:
- mb_substr($str, -3) 在 7.3 中跨编码更可靠
- 与 mb_strlen() 配合使用时边界计算更少出错
PHP 7.2 对负偏移的 mbstring 支持尚存个别边界 case 不兼容问题。
字面量 instanceof 检查(间接影响字符串逻辑)
PHP 7.3 允许 instanceof 左侧为任意字面量(包括字符串字面量),虽然不直接操作字符串,但在类型判断逻辑中带来便利:
- "hello" instanceof stdClass 直接返回 false(不报错)
- 避免因误将字符串传入需对象的判断分支而触发致命错误
- 让字符串与其他类型混合的条件分支更健壮
PHP 7.2 中此类写法会抛出 Parse Error。



















