Código PHP para generar o crear una URL amigable para buscadores como Google, Bing o Yahoo
Bienvenidos a Ver Tutoriales, en esta ocasión os traigo una función que encontré por internet (siento no poder recordar la fuente), es muy sencilla, y sirve para cambiar todas las letras no funcionales para una url, como son los acentos, la ñ, y todos los caracteres especiales.
De manera que cambiará las á por a las é por e y así con todas las letras. Pongamos el código y lo vereis más claro:
<?
function urlamigable($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ñadimos los guiones
$find = array(‘ ‘, ‘&’, ‘\r\n’, ‘\n’, ‘+’);
$url = str_replace ($find, ‘-‘, $url);// Eliminamos y Reemplazamos el resto de caracteres especiales
$find = array(‘/[^a-z0-9\-<>]/’, ‘/[\-]+/’, ‘/<[^>]*>/’);
$repl = array(”, ‘-‘, ”);
$url = preg_replace ($find, $repl, $url);
return $url;
}
?>
El código creo que es bastante simple y está bien comentado. Lo único que debemos de hacer es llamar a la función urlamigable que recibe el valor que ha de ser la url a transformar, y nos devolverá la url con los caracteres ya cambiados y listos para indexarse 🙂
Más adelante os pondré como generar un sitemap.xml para vuestra web, atacando la base de datos de mysql y utilizaremos de una manera un poco chorra esta función para que nos indexen más rapidamente los buscadores Google, Bing y Yahoo entre otros.
Pues nada más, espero que os sirva. Se puede comentar 😛
Comments
te falta el httacess
Buenas Curioso,
El httaccess es para indicarle a apache como ha de gestionarse siguiendo unos patrones, en el caso que comentas es con el Rewriterule para asignarle la forma de recoger valores por la url. Pero no es lo que quería exponer, ya que necesitaría un artículo completo para explicar el Rewrite.
Si quieres puedes colaborar :). De todas maneras lo tomaré en cuenta y si tengo esta semana un rato lo miraré para crear una url sencilla con un par de parámetros.
Un saludo!
Hola probé su función y este es el resultado.
con_guion($url)// $url=Mi primer con Ñandú
devuelve mi-primer-con-and
cuando deberia devolver mi-primer-con-nandu
creo que algo falla en la función.
// Esta función devuelve un valor sin acentos ni simbolos raros para utilizarse
// en las urls amigables
function urla($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;
}
Revisa esta función, está completa y en producción
Gracias Leon, funciona correctamente.
Nada… 😉