字符串和“字符串”之间的区别是什么;二进制“;PHP中的字符串


What is the difference between a string and a "binary" string in PHP?

在PHP中,您可以(从PHP 5.2.1开始)使用"二进制字符串":

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

与"正常"字符串有什么区别

我能找到的唯一有意义的见解是这样的评论:

然而,它只会在PHP 6.0.0之后生效,如上所述http://www.php.net/manual/en/function.is-binary.php。

链接已断开。事实上,在开发PHP 6.0时在PHP中添加二进制字符串是有道理的,因为6.0应该提供Unicode支持。所以这是一个不成熟的特征。

然而,是否有官方消息来源可以证实这一点?也就是说,确认经典字符串和二进制字符串之间绝对没有区别吗?

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

目前的PHP将字符串视为字节数组,即原始二进制Blob。PHP6被认为是一个伟大的新版本,它最大的改进是原生Unicode处理。在这一点上,字符串文字实际上会被理解为字符串,而不是字节字符串。许多字符串处理函数会因此而中断,并且需要对许多代码进行改装才能继续在PHP6中工作。

作为迁移路径,字符串可以声明为二进制字符串以保持当前行为。这是在早期添加的,目的是让开发人员有足够的时间准备代码以实现PHP6兼容性。目前b什么都不做,更改后的行为只会显示在PHP6中。

PHP 6从未发生过,现在已经死了。因此,b目前仍然没有任何作用,目前还不确定它是否会在未来有任何特定用途。