Вы пробовали preg_replace('/\x{2007}/u', '', $stringWithFigureSpaces);
?
U+2007
- это кодовая точка Unicode для FIGURE SPACE .
Пожалуйста, смотрите мой ответ на аналогичную тему юникод-регулярных выражений с PHP, которая включает информацию о \x{FFFF}
-синтаксисе.
По поводу вашего комментария о нерабочих - на моей машине отлично работает следующее:
$ php -a
Interactive shell
php > $str = "a\xe2\x80\x87b"; // \xe2\x80\x87 is the FIGURE SPACE
php > echo preg_replace('/\x{2007}/u', '_', $str); // \x{2007} is the PCRE unicode codepoint notation for the U+2007 codepoint
a_b
Какая у вас версия PHP? Вы уверены, что персонаж - это FIGURE SPACE вообще? Можете ли вы запустить следующий фрагмент на вашей строке?
for ($i = 0; $i < strlen($str); $i++) {
printf('%x ', ord($str[$i]));
}
На моей тестовой строке это выводит
61 e2 80 87 62
a |U+2007| b
РЕДАКТИРОВАТЬ после комментария OP:
\xe2\x80\xa9
- это РАЗДЕЛИТЕЛЬ ПАРАГРАФА , который является кодовой точкой Unicode U+2029
, поэтому ваш код должен быть preg_replace('/\x{2029}/u', '', $stringWithUglyCharacter);