PHP中的字符串和“二进制”字符串有什么区别?

时间:2014-10-24 03:12:46

标签: php

在PHP中,您可以(自PHP 5.2.1起)使用“二进制字符串”:

$binary = (binary) $string;
$binary = b"binary string";

“普通”字符串有什么区别?

我能找到的唯一有意义的见解是this comment

  

但是,它仅在PHP 6.0.0中生效,如http://www.php.net/manual/en/function.is-binary.php所述。

链接已经死了。实际上,在开发PHP 6.0时,在PHP中添加二进制字符串是有意义的,因为6.0应该带来Unicode支持。所以这有点过早了。

然而,是否有官方消息来证实这一点?即确认经典字符串和二进制字符串之间完全没有区别吗?

1 个答案:

答案 0 :(得分:2)

我没有任何官方消息来支持这一点,但我相信原因很简单:

本PHP将字符串视为字节数组,即原始二进制blob。 PHP 6被定为这个伟大的新版本,其最大的改进是本机Unicode处理。此时,字符串文字实际上将被理解为字符串而不是字节串。许多字符串处理函数会因此而中断,并且需要对许多代码进行改进以继续在PHP 6中工作。

作为迁移路径,可以将字符串声明为二进制字符串以保持当前行为。这是在早期添加的,以便为开发人员提供充足的时间来准备他们的PHP 6兼容性代码。目前b没有做任何事情,改变后的行为只会出现在PHP 6中。

好吧,PHP 6从未发生过,而且是dead for now。因此,b目前仍然没有做任何事情,现在它是否会在将来有任何特定用途时会有疑问。

相关问题