Estoy intentando poner lo de las url-amigables y para ello le paso una cadena con el nombre de un curso por ejemplo. Para ello se supone que esta cadena no debe contener ni espacios en blanco, ni tildes, ni caracteres raros.
El problema que tengo es que los espacios en blanco me los sustituye sin problemas por -, pero las tildes no.
Si encuentra un caracter con tilde en vez de ponerme el caracter sin tilde directamente me lo suprime, es decir, imaginen que le paso Comunicación, pues en vez de devolver comunicacion, me devuelve comunicacin.
La cadena que le paso es leida directamente de base de datos.
Os pongo la función que encontré por algún foro:
Código PHP:
function urls_amigables($url) {
// Tranformamos todo a minusculas
$url = strtolower($url);
//Rememplazamos caracteres especiales latinos
$find = array('á', 'é', 'í', 'ó', 'ú', 'ñ');
$repl = array('a', 'e', 'i', 'o', 'u', 'n');
$url = str_replace ($find, $repl, $url);
// Añaadimos los guiones
$find = array(' ', '&', '\r\n', '\n', '+');
$url = str_replace ($find, '-', $url);
// Eliminamos y Reemplazamos demás caracteres especiales
$find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
$repl = array('', '-', '');
$url = preg_replace ($find, $repl, $url);
return $url;
}
Un saludo y gracias