Tienes alguna razón para quitar los acentos?
Podrías usar
htmlentities() (en lugar de ese montón de reemplazos) lo digo por el " " a "%" que haces .. supongo que limpias esa cadena para propagarlo por el URL? ...
Por lo demás debería funcionar lo que propones (aunque recuerda que str_replace() acepta arrays para hacer esas sustituciones .. así no pones tantos "str_replace()" ....
Un saludo,