Hola Jonyjdv,
la solución es meterle el modificador o flag
u a tu expresión regular, de este modo las cadenas seran tratadas como UTF-8.
Te vuelvo a copiar tu código pero ahora con el flag
u agregado.
Código PHP:
$utfstring="DDAS|@#~½¬{[]}\~¿?=)(/&%\$·\"!'€MKSDADSM";
echo utf8_encode(preg_replace('/[^a-zA-Z0-9-_áéíóúèáìòùñçäëïöüâêîôû:.]/u', '', $utfstring));
Fijate que va al final de la expresion regular...
/[^a-zA-Z0-9-_áéíóúèáìòùñçäëïöüâêîôû:.]/
u
Mas informacion...
http://php.net/manual/en/reference.p....modifiers.php
Un saludo.