preg_replace с кириллическими символами

Я хочу заменить эти символы [^ a-zа-з0-9_] на null, но Я не могу этого сделать, когда это многобайтовая строка.

Я пробовал использовать mb_ *, iconv, PCRE, mb_eregi_replace и модификатор u (для PCRE), но ни один из них не помог.

mb_eregi_replace работает, но выводит только правильную строку utf8, но не заменяет символы, когда preg_replace работает с тем же регулярным выражением ..

Вот мой код, который работает с юникодом, но не ' t заменить текст.

function _data($data)
{
  mb_regex_encoding('UTF-8');
  return mb_eregi_replace('/[^a-zа-з0-9_]+/', '', $data);
}

var_dump(namespace\_data('Текст Removethis- and this _#$)( and also this $*@&$'));

, и результат будет со специальными символами (# _ $ ..), когда он должен их заменить, если я изменю функцию на preg_replace (а не юникод), он должен их заменить.

5
задан Alex Emilov 12 October 2011 в 16:45
поделиться