正規表現を使用して、PHP の UTF8 文字列から空白文字の繰り返しを削除しようとしています。この正規表現
$txt = preg_replace( '/\s+/i' , ' ', $txt );
通常は正常に動作しますが、一部の文字列にはキリル文字 "Р" が含まれており、交換後にねじ込まれています。ちょっとした調査の結果、文字は \x{D0A0} としてエンコードされていることに気付きました。\xA0 は ASCII の非改行空白であるため、正規表現はそれを \x20 に置き換え、文字は無効になります。
PHPで正規表現を使用してこれを適切に行う方法はありますか?