ID: 22592
Updated by: [EMAIL PROTECTED]
Reported By: matteo at beccati dot com
-Status: Analyzed
+Status: Verified
Bug Type: Scripting Engine problem
Operating System: Debian GNU/Linux 3.0
PHP Version: 4.3.2-dev
Previous Comments:
------------------------------------------------------------------------
[2003-03-07 12:13:25] [EMAIL PROTECTED]
Happens also with 4.3.2-dev. (from today)
------------------------------------------------------------------------
[2003-03-07 11:40:25] matteo at beccati dot com
When using cascading assignments to strings and curly braces, to change
characters within strings, only the last character is changed to the
right value. Other characters become NUL (0x00).
<?
$wrong = $correct = 'abcdef';
$correct{1} = '*';
$correct{3} = '*';
$correct{5} = '*';
// This produces the
$wrong{1} = $wrong{3} = $wrong{5} = '*';
echo $correct."\n".$wrong."\n\n";
echo urlencode($correct)."\n"."\n".urlencode($wrong)."\n";
?>
The resulting output is:
a*c*e*
ace*
a%2Ac%2Ae%2A
a%00c%00e%2A
I also tested it on a old PHP 4.2.0-dev, and it gives the same result.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=22592&edit=1