28 Stimmen

Was bewirkt das b vor den String-Literalen?

$binary = b'Binary string';

Welche Folgen hat es, eine Zeichenkette als b inary?

Ich konnte in der Dokumentation keinen Hinweis darauf finden. Ich habe diese kleine Kuriosität gerade gefunden, als ich den language_scanner durchgesehen habe.

28voto

Arnaud Le Blanc Punkte 95132

Dies ist ein Vorwärtskompatibilitäts-Token für die nie erscheinende PHP-Version 6, die native Unicode-Unterstützung hätte haben sollen.

In PHP6 sind Strings standardmäßig Unicode, und die Funktionen arbeiten auf der Ebene der Unicode-Zeichen. Dieses "b" steht für "binary string", d.h. einen Nicht-Unicode-String, auf den die Funktionen auf Byte-Ebene zugreifen.

Dies hat keinen Effekt in PHP != 6, wo alle Strings binär sind.

2voto

brian_d Punkte 10944

Binäres Casting ist seit 5.2.1 verfügbar, aber wird erst mit der Version 6.0 in Kraft treten wenn Unicode-Zeichenfolgen ebenfalls wirksam werden.

Das erklärt, warum dies bei mir auf einem Server mit 5.2.6 nichts Besonderes bewirkt:

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

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

0voto

In String umwandeln

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X