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

Reply via email to