Si, @Triby, me sirve. Y ya casi logro hacer una que funcione igual.
 
preg_replace entonces es lo que buscaba. Gracias. 
Lo que me queda es no solo conservar letras y numeros sino tambien guiones altos y bajos. Me ayudas?  
 Cita:  // Eliminar todo lo que no sea letras, numeros o espacios y eliminar espacios dobles
    $str = preg_replace("/[^a-zA-Z0-9\s]/", "", $str);
    $str = preg_replace('/\s\s+/', ' ', $str);
    Esta es tu funcion. Que agregamos? 
EDITADO _---  
Basandome en tu funcion, esto funcionó:  
 Cita:  $str  = preg_replace("/[^a-zA-Z\_\-\.0-9]/", "", $str );