字符串文本前面的 b 有什么作用?

2022-08-30 16:11:56
$binary = b'Binary string';

创建一个字符串作为 inary 有什么后果?b

我在文档中找不到任何有关此的提示。只是在浏览language_scanner时发现了这个小小的好奇心。


答案 1

这是从未发布的 PHP 版本 6 的正向兼容性令牌,该版本应该具有本机 unicode 支持。

在 PHP6 中,字符串默认为 unicode,函数在 unicode 字符级别运行。此“b”表示“二进制字符串”,即非 unicode 字符串,其上的函数在字节级别运行。

这在 PHP != 6 中没有影响,因为 PHP 中所有字符串都是二进制的。


答案 2

二进制转换自 5.2.1 起可用,但直到 6.0 unicode 字符串也生效时才会生效。

这就解释了为什么现在在使用5.2.6的服务器上,这对我没有任何特别的作用:

<?php
$t = b"hey";
var_dump($t);
//string(3) "hey"

$s = (binary)"hey";
var_dump($s);
//string(3) "hey"
?>

推荐