#40863 [Opn]: str_ireplace not behaving as expected
| From: | jonathan at sadowski dot us | Date: | Tue, 20 Mar 2007 10:40:10 +0000 |
| Subject: | #40863 [Opn]: str_ireplace not behaving as expected | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-110550@lists.php.net to get a copy of this message | ||
ID: 40863
User updated by: jonathan at sadowski dot us
Reported By: jonathan at sadowski dot us
Status: Open
Bug Type: Strings related
Operating System: Ubuntu
PHP Version: 5.2.1
New Comment:
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
Previous Comments:
------------------------------------------------------------------------
[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] tony2001@php.net
..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