In my string I have utf-8 non-breaking space (0xc2a0) and I want to replace it with something else.

When I use

$str=preg_replace('~\xc2\xa0~', 'X', $str);

it works OK.

But when I use

$str=preg_replace('~\x{C2A0}~siu', 'W', $str);

non-breaking space is not found (and replaced).

Why? What is wrong with second regexp?

The format \x{C2A0} is correct, also I used u flag.

Edit
Report