|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2002-01-02 23:49 UTC] voltaic at thcnet dot 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.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 07:00:01 2025 UTC |
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.