ID:               40863
 Updated by:       [EMAIL PROTECTED]
 Reported By:      jonathan at sadowski dot us
-Status:           Open
+Status:           Bogus
 Bug Type:         Strings related
 Operating System: Ubuntu
 PHP Version:      5.2.1
 New Comment:

Please read what I say:
str_ireplace() changes 'E' and 'e' to 'W' and then changes 'W' to 'G'.


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

[2007-03-20 10:40:10] jonathan at sadowski dot us

Here's a more concrete example...  The last line of the output should
be "WE THE PEOPLE OF THE UNITED STATES"

<?php
$phrase = "We the People of the United States";
$letters = explode(" ","A B C D E F G H I J K L M N O P Q R S T U V W X
Y Z");
$key = explode(" ","V T U O W Q E X Y K S D Z B M A I L J R C F G H P
N");
$TMP1 = str_ireplace($letters,$key,$phrase);
$TMP2 = str_ireplace($key,$letters,$TMP1);
echo $phrase . "\n";
echo $TMP1 . "\n";
echo $TMP2 . "\n";
?>


Actual output:
We the People of the United States
GG RHG AGMADG MI RHG CBPRGM JRFRGJ
WW TXW YWOYTW OQ TXW UZYTWO STVTWS

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

[2007-03-20 10:28:41] jonathan at sadowski dot us

Perhaps you should read the expected result before marking it bogus,
and read through the sample code to see what its supposed to do.

The first word is "We", this cannot produce "GG" no matter what, as "W"
and "e" are two different words.

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

[2007-03-20 10:20:15] [EMAIL PROTECTED]

..E .. W 
..W .. G 

E replaced with W
W replaced with G.

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

[2007-03-20 10:10:33] jonathan at sadowski dot us

Description:
------------
str_ireplace doesn't behave as expected when $search and $replace are
equally sized arrays, and $subject is a string containing mixed case.

Reproduce code:
---------------
<?php
$phrase = "We the People of the United States";
$letters = explode(" ","A B C D E F G H I J K L M N O P Q R S T U V W X
Y Z");
$key = $letters;
shuffle($key);
echo sizeof($letters) . "\n" . sizeof($key) . "\n\n";
echo implode(" ",$letters) . "\n" . implode(" ",$key) . "\n" .
str_ireplace($letters,$key,$phrase);
?>


Expected result:
----------------
26
26

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
V T U O W Q E X Y K S D Z B M A I L J R C F G H P N
GW RXW AWMADW MQ RXW CBYRWO JRVRWJ

Actual result:
--------------
26
26

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
V T U O W Q E X Y K S D Z B M A I L J R C F G H P N
GG RHG AGMADG MI RHG CBPRGM JRFRGJ


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


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

Reply via email to