18
Hoy en día la creación slugs basados en lo títulos de nuestros artículos es muy popular. WordPress, Drupal y muchos más lo utilizan de forma excelente. Sin duda los slugs son muy favorables para el posicionamiento web (SEO) en los buscadores especialmente en Google.
No basta con tener configurado tu htaccess o algún script que permita trabajar con urls amigables, especialmente si trabajamos con una tabla de artículos necesitaremos crear un slug de los títulos para que puedan ser leídos por el método que usemos para generar urls amigables.
Aquí un método que anos ayudara en este proceso.
function caracteres_latinos($cadena){
//acentos
$cadena = ereg_replace("(À|Á|Â|Ã|Ä|Å|à|á|â|ã|ä|å)","a",$cadena);
$cadena = ereg_replace("(È|É|Ê|Ë|è|é|ê|ë)","e",$cadena);
$cadena = ereg_replace("(Ì|Í|Î|Ï|ì|í|î|ï)","i",$cadena);
$cadena = ereg_replace("(Ò|Ó|Ô|Õ|Ö|Ø|ò|ó|ô|õ|ö|ø)","o",$cadena);
$cadena = ereg_replace("(Ù|Ú|Û|Ü|ù|ú|û|ü)","u",$cadena);
//la ñ
$cadena = ereg_replace("(Ñ|ñ)","n",$cadena);
//caracteres extraños
$cadena = ereg_replace("(Ç|ç)","c",$cadena);
$cadena = ereg_replace("ÿ","y",$cadena);
return $cadena;
}
function generar_slug($cadena, $separador = '-'){
//sin espacios al inicio o al final
$cadena = trim($cadena);
//limpiamos caracteres los latinos
$cadena = caracteres_latinos($cadena);
//pasamos a minúscula la cadena
$cadena = strtolower($cadena);
//limpiamos saltos de líneas y tab
$cadena = ereg_replace("[ \t\n\r]+", " ", $cadena);
//limpiamos todos los caracteres inválidos
$cadena = ereg_replace("[^ A-Za-z0-9_]", "", $cadena);
//limpieza de espacios vacíos de los valores inválidos al final de la cadena
$cadena = trim($cadena);
//reemplazamos los espacios vacios por el separador
$cadena = str_replace(" ", $separador, $cadena);
return $cadena;
}
$str = generar_slug('Así es el ejemplo para generar el Slug ¿o no?');
//retornara #-> asi-es-el-ejemplo-para-generar-el-slug-o-no
echo $str;
Muy sencillo pero practico, lo podemos usar para generar un slug del titulo de nuestros artículos y grabarlo en otro campo de nuestra tabla el cual se convertiría en un identificador de la noticia.
Tags: Programación Web, Recursos Web, Scripts, SEO

















Excelente. Hacía tiempo que quería quitar los acentos de las url de mi web y no lo había conseguido al 100 %. Con este script si me ha salido.
Gracias!!
Con
Mozilla Firefox 3.0.2 y
Windows Vista
Hola
me parece super interesante! estoy tratando de hacer un CMS y eso me llevo a ver un poco en la web q es lo de urls amigables, y este articulo me parece bastante claro.
pero como se utiliza? no entiendo como deberia funcionar la estructura.
alguien q me oriente un poquito??
Gracias
Ana.
Con
Mozilla Firefox 3.0.3 y
Mac OS X
@Anabella: Esta función podrias utilizarla justo antes de guardar el titulo de la noticia en tu tabla con lo cual generas el slug y tambien lo guardas.
algo asi
// supongamos que $_POST['titulo'] = “Anabella programando un CMS en php”;
$titulo = $_POST['titulo'];
//$titulo=”Anabella programando un CMS en php”
$slug = generar_slug($titulo);
//$slug=”anabella-programando-un-cms-en-php”
$contenido = $_POST['contenido']);
//$contenido=”El cms consta de 5 archivos…. etc”
$query =”INSERT INTO noticias (titulo,slug, contenido)
VALUES (’”.$titulo.”‘, ‘”.$slug.”‘, ‘”.$contenido.”‘)”;
Luego el slug se volveria algo similar a un identificador de la noticia, que despues mediante la url.
/index.php?noticia=anabella-programando-un-cms-en-php
$query = “SELECT * FROM noticias WHERE slug=’”.$_GET['noticia'].”‘”;
algo asi es la idea obviamente no olvidando validaciones previas
.
Saludos.
Con
Mozilla Firefox 2.0.0.12 y
Mac OS X
Hola Alguien me puede explicar como se utiliza este script? tengo en la base donde se guarda el contenido de las paginas un campo reservado para el nombre amigable y despues pretendo levantar en el index cada contenido dependiendo de lo solicitado pero donde debe estar este script y que info debo enviarle?
Gracias Ana
Con
Mozilla Firefox 3.0.3 y
Mac OS X
Muy interesante!,
He encontrado una rutina en que hace lo mismo pero algo mas elegante.
http://debuggable.com/posts/title-to-url-slug-conversion:480f4dd6-a398-4c76-895c-4844cbdd56cb
para convertir URL que es algo mas “fina” pero hace lo mismo.
Yo le tuve que añadir una conversión de UTF8 a ISO al principio ( utf8_decode()) por que trabajo con UTF8.
Con
Safari 525.19 y
Mac OS X