Se me ocurre con expresiones regulares, un ejemplo que solo deja caracteres de la a a la z minúsculas y mayúsculas y números y espacios en blanco...
Código PHP:
Ver original<?php
$patron = '/[^a-zA-Z0-9 ]/';
$texto = 'Está es una prueba de limpieza de texto con caracteres especiales, áaéeíióoúuÁAÉEÍIÓOÚUNÑnñ !"·$%&/(';
echo $limpio;