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

 ID:                 53956
 Comment by:         skyboy at mail dot ru
 Reported by:        skyboy at mail dot ru
 Summary:            Zero Width Space is not replaced by ordinary space
 Status:             Bogus
 Type:               Bug
 Package:            PCRE related
 Operating System:   Ubuntu 10.10
 PHP Version:        5.3.5
 Block user comment: N
 Private report:     N

 New Comment:

oh!sorry for this. this is my mistake.

but why "zero width *space*" does not belong to [s]pace symbols' group?


Previous Comments:
------------------------------------------------------------------------
[2011-02-08 11:15:39] ahar...@php.net

Your arguments to preg_replace are swapped, ie:



preg_replace('#\s+#', $str, '-');



should be:



preg_replace('#\s+#', '-', $str);



Also note that Unicode zero width spaces aren't included in \s, but

you can match them directly with the u modifier (replace <200b> with

an actual zero width space character):



preg_replace('#<200b>+#u', '-', $str);



Not a bug: closing.

------------------------------------------------------------------------
[2011-02-08 10:45:51] skyboy at mail dot ru

Description:
------------
Group of zero width spaces is succesfully replaced by any character but
ordinary space.

Test script:
---------------
$str = "​​‎​​‎​​‎"; // 27 zero width spaces with
unicode code of u200B 

var_dump($str);

var_dump(preg_replace('#\s+#', $str, '-'));

var_dump(preg_replace('#\s+#', $str, ' '));

Expected result:
----------------
string(27) "​​‎​​‎​​‎" string(1) "-" string(1)
"​​‎​​‎​​‎-" 

Actual result:
--------------
string(27) "​​‎​​‎​​‎" string(1) "-" string(27)
"​​‎​​‎​​‎" 




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



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

Reply via email to