Следующее делает трюк:
$str = "some മനുഷ്യന്റെ";
echo preg_replace('/[\x{00ff}-\x{ffff}]/u', '*', $str);
// some **********
echo preg_replace('/[^\x{00ff}-\x{ffff}]/u', '*', $str);
// *****മനുഷ്യന്റെ
Важным является модификатор u
(см. здесь ):
Этот модификатор включает дополнительные
функциональность PCRE, то есть
несовместим с Perl. Шаблон
Строки обрабатываются как UTF-8. это
модификатор доступен из PHP 4.1.0
или выше в Unix и из PHP 4.2.3
на win32. UTF-8 срок действия
шаблон проверен начиная с PHP 4.3.5.
И здесь краткое описание, почему \uFFFF
не работает в PHP:
Perl и PCRE не поддерживают
\ uFFFF синтаксис. Они используют \ x {FFFF}
вместо. Вы можете опустить ведущие нули в
шестнадцатеричное число между
Фигурные скобки. Поскольку \ x само по себе является
недопустимый токен регулярного выражения, \ x {1234} может
никогда не путай, чтобы соответствовать \ x 1234
раз. Это всегда соответствует Unicode
кодовая точка U + 1234. \ x {1234} {5678}
попытаться точно подобрать кодовую точку U + 1234
5678 раз