字符串文字前面的b是做什么的?

时间:2011-01-20 16:03:33

标签: php string syntax

$binary = b'Binary string';

将字符串创建为b inary会产生什么后果?

我在文档中找不到任何关于此的提示。通过language_scanner查看这个小小的好奇心。

3 个答案:

答案 0 :(得分:21)

这是永远不会发布的PHP版本6的前向兼容性令牌,它应该具有本机unicode支持。

在PHP6中,字符串默认为unicode,函数在unicode字符级别上运行。这个“b”表示“二进制字符串”,即一个非unicode字符串,函数在字节级操作。

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

答案 1 :(得分:1)

二进制强制转换自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"
?>

答案 2 :(得分:-1)

转换为字符串

$binary = preg_replace('/[[:^print:]]/', '', $binary);