php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #47164 uncomfortable (binary)char() append to binary string
Submitted: 2009-01-20 10:59 UTC Modified: 2010-06-13 19:01 UTC
From: lunter at interia dot pl Assigned: scottmac (profile)
Status: Wont fix Package: Unicode Engine related
PHP Version: 6CVS-2009-01-20 (snap) OS: *
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: lunter at interia dot pl
New email:
PHP Version: OS:

 

 [2009-01-20 10:59 UTC] lunter at interia dot pl
Description:
------------
uncomfortable (binary)char() append to a binary string

Reproduce code:
---------------
$b=(binary)'';

$b.=chr(255);
$b.=chr(254);
$b.=chr(253);
$b.=chr(252);
$b.=chr(251);
...
$b.=chr(0);

Expected result:
----------------
detect $b type as binary string and adding chr() in binary mode

like this:

$b=(binary)'';

$b.=(binary)chr(255);
$b.=(binary)chr(254);
$b.=(binary)chr(253);
$b.=(binary)chr(252);
$b.=(binary)chr(251);
...
$b.=(binary)chr(0);

Actual result:
--------------
adding chr() in unicode

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2009-01-21 11:12 UTC] johannes@php.net
Actually we need a function doing "binary chr" - chr() in PHP 6 takes a codepoint not the byte value, so  (binary)chr($c) will give the wrong result.
 [2009-01-21 11:26 UTC] johannes@php.net
$b = sprintf("%c%c%c", 255, 254, 253);

should work, but having a simple function might still be helpful
 [2009-01-21 12:31 UTC] lunter at interia dot pl
johannes@php.net "(binary)chr($c) will give the wrong result"

hmmmmmmm....... try code above.

b1.dat consists utf-8 data
b2.dat consists binary chars 0 - 255 step 1, file length is correct - 256B & chars are correct...

<?
 if(substr(phpversion(),0,1)!='6'){trigger_error('only PHP 6',E_USER_ERROR);}

// unicode.semantics = off
// unicode.runtime_encoding = iso-8859-1
// unicode.script_encoding = utf-8
// unicode.output_encoding = utf-8
// unicode.from_error_mode = U_INVALID_SUBSTITUTE
// unicode.from_error_subst_char = 3f

 $b1=(binary)'';
 for($z=0;$z<256;$z++){$b1.=chr($z);}
 file_put_contents('b1.dat',$b1);

 $b2=(binary)'';
 for($z=0;$z<256;$z++){$b2.=(binary)chr($z);}
 file_put_contents('b2.dat',$b2);
?>
 [2009-01-21 16:24 UTC] johannes@php.net
Scott said he'd look into this :-)
 [2010-06-13 19:01 UTC] felipe@php.net
-Status: Assigned +Status: Wont fix
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Sat Feb 08 10:01:28 2025 UTC