Función php urls amigables

1 feb 2010 5 comentarios

Tener en nuestra página web nuestros links internos con urls amigables esta demostrado que favorecen a un mejor posicionamiento web y facilitan al visitante información del contenido del enlace antes de hacer click sobre el.

Vamos a crear una función en php para generar cadenas amigables para nuestras urls.

function url_amigable($cadena) {
   // Sepadador de palabras que queremos utilizar
   $separador = "-";
   // Eliminamos el separador si ya existe en la cadan actual
   $cadena = str_replace($separador, "",$cadena);
   // Convertimos la cadena a minusculas
   $cadena = strtolower($cadena);
   // Remplazo tildes y eñes
   $cadena = strtr($cadena, "áéíóúÁñÑ", "aeiouAnN");
   // Remplazo cuarquier caracter que no este entre A-Za-z0-9 por un espacio vacio
   $cadena = trim(ereg_replace("[^ A-Za-z0-9]", "", $cadena));
   // Inserto el separador antes definido
   $cadena = ereg_replace("[ \t\n\r]+", $separador, $cadena);
   
   return $cadena;
}
// Modo de empleo:
echo url_amigable("¡¡¡Sin LEÓN no hubiera España, que antes que Castilla leyes, Concilios, fueros y reyes, dieron prestigio a León!!!");
// Resultado: sin-leon-no-hubiera-espana-que-antes-que-castilla-leyes-concilios-fueros-y-reyes-dieron-prestigio-a-leon

5 Comentarios

Chema, el 02/02/2010 a las 23:39:00

Está bien la función uso algo parecido pero te dejas las dieresis la ç ñ , limpiar html…

Mira te esto: http://neo22s.com/slug/

bufa, el 03/02/2010 a las 01:44:06

Gracias Chema! Estupenda tu función de remplazar acentos replace_accents() para vocabulario con diéresis y ç.

CalinSoft, el 24/07/2010 a las 00:19:55

tambien es muy parecida a esta, http://www.calinsoft.com/2008/09/generar-slugs-para-urls-amigables-con-php.html pero esta ayuda con los acentos.

Rikochett, el 21/09/2011 a las 14:14:07

¿Y esta función opera sobre enlaces que resultan de consultas a una base de datos MySQL? Ejemplo: leer_mas.php?id=8&categoria=Astronomia …

Marcos Salas, el 22/12/2011 a las 04:55:23

Muy interesante, me fuciono!!

Escribe un comentario

Comenta este post en Facebook