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