Edit report at http://bugs.php.net/bug.php?id=47164&edit=1

 ID:               47164
 Updated by:       [email protected]
 Reported by:      lunter at interia dot pl
 Summary:          uncomfortable (binary)char() append to binary string
-Status:           Assigned
+Status:           Wont fix
 Type:             Bug
 Package:          Unicode Engine related
 Operating System: *
 PHP Version:      6CVS-2009-01-20 (snap)
 Assigned To:      scottmac



Previous Comments:
------------------------------------------------------------------------
[2009-01-21 16:24:57] [email protected]

Scott said he'd look into this :-)

------------------------------------------------------------------------
[2009-01-21 12:31:14] lunter at interia dot pl

[email protected] "(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 11:26:24] [email protected]

$b = sprintf("%c%c%c", 255, 254, 253);



should work, but having a simple function might still be helpful

------------------------------------------------------------------------
[2009-01-21 11:12:52] [email protected]

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-20 10:59:03] 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


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=47164&edit=1

Reply via email to