我越来越关注PHP应用程序的多字节安全性,这主要涉及将字符串操作函数替换为它们的等效mb_*函数。
然而,字符串连接让我有些犹豫。
一些字符编码(如UTF-16 unicode)可能在开头包含一个字节顺序标记。如果您连接了两个UTF16字符串,那么您可能会在结果字符串的其他位置引入BOM。我怀疑还有其他编码也可以包含“头”信息,使得拼接相同编码的两个字符串也成为问题。PHP在进行多字节字符串连接时能够聪明地丢弃BOM等吗?我怀疑不能,因为PHP传统上只将字符串视为字节序列。是否有一个多字节安全的连接等价物?我在mbstring文档中没有找到任何内容。
显然,连接不同编码的字符串永远不安全,所以我现在不用担心。