ID: 47480
Comment by: mmcnickle at gmail dot com
Reported By: sehh at ionos dot gr
Status: Open
Bug Type: PCRE related
Operating System: Linux
PHP Version: 5.2.8
New Comment:
The test case is wrong and the bug should be closed. The upper case
search target is misspelled.
$target1 = "ÊÉÍÇÔÇÑÁ";
$target2 = "êéíçôÞñá";
should read
$target1 = "ÊÉÍÇÔÞÑÁ";
$target2 = "êéíçôÞñá";
(note the replacement of the second Ç with a capital Thorn (U+00DE).
With this change I get the expected result:
Actual Result
-------------
Searching for: ÊÉÍÇÔÞÑÁ
Result string: Ôï êõñßùò ôìÞìá ôïõ itworks, áõôü ðïõ ðåñéëáìâÜíåé ôïõò
êõëßíäñïõò
Found and replaced: 1
Searching for: êéíçôþñá
Result string: Ôï êõñßùò ôìÞìá ôïõ itworks, áõôü ðïõ ðåñéëáìâÜíåé ôïõò
êõëßíäñïõò
Found and replaced: 1
Previous Comments:
------------------------------------------------------------------------
[2009-02-23 13:32:39] sehh at ionos dot gr
Description:
------------
preg_replace with the "/i" (case insensitive search) does not do a case
insensitive search for UTF-8 Greek characters, while it works fine for
English characters.
Reproduce code:
---------------
<?php
$string = "Ôï êõñßùò ôìÞìá ôïõ êéíçôÞñá, áõôü ðïõ ðåñéëáìâÜíåé ôïõò
êõëßíäñïõò"; // UTF-8 string in Greek language
$target1 = "ÊÉÍÇÔÇÑÁ"; // Target string to search for (capitalized)
$target2 = "êéíçôÞñá"; // Target string to search for (small letters)
$replace = "itworks"; // Replace with this string
$rc = preg_replace("/$target1/imsUu", $replace, $string, -1, $counter);
// Execute search for target1 and replace
echo "\nSearching for: ".$target1."\n"; // Report output
echo "Result string: ".$rc."\n";
echo "Found and replaced: ".$counter."\n";
$rc = preg_replace("/$target2/imsUu", $replace, $string, -1, $counter);
// Execute search for target2 and replace
echo "\nSearching for: ".$target2."\n"; // Report output
echo "Result string: ".$rc."\n";
echo "Found and replaced: ".$counter."\n\n";
?>
Expected result:
----------------
I expect the Found and Replaced to be both "1" since the expression is
not case sensitive.
Actual result:
--------------
$ php -f test.php
Searching for: ÊÉÍÇÔÇÑÁ
Result string: Ôï êõñßùò ôìÞìá ôïõ êéíçôÞñá, áõôü ðïõ ðåñéëáìâÜíåé ôïõò
êõëßíäñïõò
Found and replaced: 0
Searching for: êéíçôÞñá
Result string: Ôï êõñßùò ôìÞìá ôïõ itworks, áõôü ðïõ ðåñéëáìâÜíåé ôïõò
êõëßíäñïõò
Found and replaced: 1
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=47480&edit=1