Bueno ahora ya he conseguido que permita nombres de solo letras, números, espacios y tildes. Y generar la url eliminando las tildes.
Código PHP:
$username = "ε[-ิิ_•ิ] Daniel García";
$username = strip_tags($username);
$username = preg_replace('([^A-Za-zÁÉÍÓÚáéíóú0-9\s])', '', $username);
$username = trim($username);
$url1= array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú"," ","_");
$url2= array ("a","e","i","o","u","A","E","I","O","U","-","-");
$url = str_replace($url1,$url2,$username);
$url = strtolower($url);
echo "<b>Aquí el nombre de usuario:</b> |".$username."|";
echo "<br><b>Aquí la url de usuario:</b> |".$url."|";
El resultado:
Aquí el nombre de usuario: |Daniel García|
Aquí la url de usuario: |daniel-garcia|
Pero como esto es con expresiones regulares ahora voy a probar la función que me decía xSkArx.