niełamujące się utf-8 0xc2a0 spacja i preg_replace dziwne zachowanie

W moim łańcuchu mam utajniającą przestrzeń utf-8 (0xc2a0) i chcę ją zastąpić inną.

Kiedy używam

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

to działa OK.

Ale kiedy używam

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

nie złamana przestrzeń nie została znaleziona (i zastąpiona).

Czemu? Co jest nie tak z drugim wyrażeniem regularnym?

Format\x{C2A0} jest poprawne, także użyłemu flaga.

questionAnswers(5)

yourAnswerToTheQuestion