// нам нужно вырезать все кроме букв, цифр и символов пробела, - и _
$test = ereg_replace("[^a-zA-Z0-9 -_]", "", $test);
// или
$test = preg_replace("/[^a-zA-Z0-9 -_]/i", "", $test);
Мне интересно знать почему не идет замена? Это ошибка PHP или фича такая?