El tema es que no podés anular un "ñ" porque si, por ahí es mejor saber que es una "ñ" y reemplazarla por tal. Contanos un poco más que es lo que tenes que sacar que son "cientos" y vemos si es mejor una regex o un simple replace.
PD: RollerSky, no es necesario hacer un for sobre
$carct_invalidos, podes usarlo directamente en el replace (soporta arrays):
Código PHP:
<?php
$carct_invalidos = array('ñ','$','/'); //etc....
//Haces tu consulta, y en una variable guardas toodas las palabras Como un parrafo.
$string = "Hola Mundo &% aqui texto ' y mas texto $ .....";
$string = str_replace($carct_invalidos, '_' ,$string); //Esto te reemplaza los caracteres invalidos por un "_"
}
?>