Bug #14819 Updated: str_replace used with serialize

From: Date: Sat, 05 Jan 2002 13:05:20 +0000
Subject: Bug #14819 Updated: str_replace used with serialize
References: 1  Groups: php.dev 
Request: Send a blank email to php-dev+get-75944@lists.php.net to get a copy of this message
ID: 14819
Updated by: edink
Reported By: voltaic@thcnet.net
Old Status: Open
Status: Feedback
Bug Type: Strings related
Operating System: Linux
PHP Version: 4.0.5
New Comment:

Cannot reporoduce this:

$mystring="don't";
$myarray[ 0 ] = "s1";
$myarray[ 1 ] = "s2";
$myarray[ 2 ] = str_replace( "'", "", $mystring );
$myserial = serialize( $myarray );
print $myserial."\n";

prints correctly:

a:3:{i:0;s:2:"s1";i:1;s:2:"s2";i:2;s:4:"dont";}

in PHP 4.0.5, PHP 4.1.1, adn PHP 4.2.0-dev.

Does this example work for you? If it does
could you please provide a complete example
that produces incorrect output.


Previous Comments:
------------------------------------------------------------------------

[2002-01-04 20:55:32] voltaic@thcnet.net

Here are my configuration options:

'./configure' '--prefix=/usr/local'
'--with-apache=/usr/local/src/Apachetoolbox-1.5.19/apache_1.3.19'
'--enable-exif' '--enable-memory-limit=yes' '--enable-track-vars'
'--with-calendar=shared' '--enable-safe-mode' '--enable-magic-quotes'
'--enable-trans-sid' '--enable-wddx' '--enable-ftp'
'--with-mysql'
'--with-mysql=/usr/local/mysql' '--with-openssl'


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

[2002-01-03 03:56:56] sander@php.net

Status -> feedback

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

[2002-01-03 01:28:09] georg@php.net

Just tested it with 4.0.6 and 4.1.0
All seems to be ok.

Can you send me your configuration options?



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

[2002-01-02 23:49:09] voltaic@thcnet.net

Two lines like this:
$myarray[ 2 ] = str_replace( "'", "", $mystring );
$myserial = serialize( $myarray );

produce a serialized array in $myserial but it contains the wrong length
or sometimes the wrong value for the string I inserted.  It sometimes
deletes the "'" and the following character, sometimes deletes just the
"'" but has the wrong length of the string encoded in the serialized
variable.  

An example of $myserial would be:
a:3:{i:0;s:2:"s1";i:1;s:2:"s2";i:2;s:5:"dont";} 
Which encodes the wrong length for the final string.

It works correctly when I break it into three lines:
$mystring = str_replace( "'", "", $mystring );
$myarray[ 2 ] = $mystring;
$myserial = serialize( $myarray );

An example of $myserial would be:
a:3:{i:0;s:2:"s1";i:1;s:2:"s2";i:2;s:4:"dont";} 
Which encodes the correct length for the final string.

This only appears to happen if there is a str_replace match in the
string.  If there is no match for the str_replace function, the glitch
doesn't seem to appear.  Thanks.

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



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



Thread (7 messages)

« previous php.dev (#75944) next »