То, что вы делаете, не сработает, потому что вы обрабатываете строку UTF-8, как если бы она была однобайтовой кодировкой. Вы фактически удаляете части символов . Если вам необходимо добавить флаг u
в выражение регулярного выражения, чтобы активировать режим UTF-8.
Поскольку вы хотите оставить только управляющие символы и другие символы диапазона ASCII, вы должны заменить все остальные на ''. Итак:
$description = preg_replace('/[^\x{0000}-\x{007F}]/u', '', $description);
, который дает для вашего ввода:
. ! ********************* - * NEW to version 1.1 - the expert talks!!! *