Pues eso, ya lo dice el título. Si quieres generar una cadena quitando acentos, tildes y otros caracteres que no son compatibles con nombres de archivos o URL, puedes usar esta función en PHP:
function _f($a) { return preg_replace("/[/_|+ -]+/",'-',strtolower(trim(preg_replace("/[^a-zA-Z0-9/_|+ -]/",'',iconv('UTF-8','ASCII//TRANSLIT',strip_tags($a))),'-'))); }
De tal forma que usando:
_f('El que es ñoño es ñoño, como diría ese señor #jojo. %30 de dinero')
... resultará en algo como:
el-que-es-nono-es-nono-como-diria-ese-senor-jojo-30-de-dinero
Es una solución simple y efectiva.
(en caso de que no funcione, aquí está el archivo fuente)
https://tar.mx/tar.svg