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

Php 字符串文本前面的b是做什么的?,php,string,syntax,Php,String,Syntax,创建一个字符串作为binary有什么后果 我在文档中找不到任何关于这方面的提示。在浏览语言扫描器时发现了这个小小的好奇心。二进制转换从5.2.1开始提供,但直到6.0 unicode字符串也生效时才会生效 这就解释了为什么现在在使用5.2.6的服务器上,这对我来说没有什么特别的作用: $binary = b'Binary string'; 这是一个用于永不发布的PHP版本6的前向兼容性令牌,该版本本应具有本机unicode支持 在PHP6中,字符串默认为unicode,函数在字符串上以unic

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


我在文档中找不到任何关于这方面的提示。在浏览语言扫描器时发现了这个小小的好奇心。

二进制转换从5.2.1开始提供,但直到6.0 unicode字符串也生效时才会生效

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

$binary = b'Binary string';

这是一个用于永不发布的PHP版本6的前向兼容性令牌,该版本本应具有本机unicode支持

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

这在PHP中没有效果!=6,其中所有字符串都是二进制的。

转换为字符串

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

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

你使用的是什么版本的PHP?我使用的是PHP5.3.5。但为什么这很重要?@罗伯特皮特:会吗?它至少应该是
b要连接的字符串“
?在PHP5.2中,它只会回显二进制字符串:,但在某些版本上它会抛出语法错误。这一点很清楚。有趣的是他们做了这件事。还有其他类似的转发compat令牌吗?据我所知,除了相关的“(二进制)”cast令牌之外,没有其他令牌。那么我如何使它消失呢?我需要解码吗?嗨,欢迎来到Stack Overflow。感谢您抽出时间提供答案!但是,请注意,问题是关于字符串前面的“b”以及它的含义/创建二进制字符串的意义。你的帖子实际上没有回答这个问题。如果你有一般性的评论,考虑一旦你获得了足够的声誉,就把它们作为评论而不是回答。在此之前,集中精力回答实际问题。
$binary = preg_replace('/[[:^print:]]/', '', $binary);