Что делает b перед строковыми литералами? - PullRequest
20 голосов
/ 20 января 2011
$binary = b'Binary string';

Какие последствия имеет создание строки как b inary?

Я не смог найти намека на это в документации. Просто нашел это маленькое любопытство, просматривая language_scanner.

Ответы [ 2 ]

21 голосов
/ 20 января 2011

Это токен прямой совместимости для ранее не выпускавшейся версии PHP 6, которая должна была иметь встроенную поддержку юникода.

В PHP6 строки по умолчанию являются Unicode, а функции работают с ними на уровне символов Unicode. Это «b» означает «двоичную строку», то есть строку не в кодировке Юникод, в которой функции работают на уровне байтов.

Это не действует в PHP! = 6, где все строки являются двоичными.

1 голос
/ 20 января 2011

Двоичное приведение доступно с версии 5.2.1, но не вступит в силу, пока не вступят в силу строки 6.0 , когда также действуют строки Юникода.

Что объясняет, почему это сейчас не делает для меня ничего особенного насервер использует 5.2.6:

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

$s = (binary)"hey";
var_dump($s);
//string(3) "hey"
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...