¿Cómo crear URL amigables con PHP?

2

El Slug es un término adaptado del periodismo anglosajón que hace referencia al nombre de una noticia o artículo en el que se han sustituido los espacios en blanco por guiones y se han eliminado todos los caracteres que no sean letras o números. Estos slug son comúnmente usados como parte de la URL de las entradas y páginas de WordPress. En este tutorial se verá como crear URL amigable con PHP haciendo uso del concepto de slug.

Entonces para crear un slug haciendo uso de PHP se va a crear un archivo slug.php y a dicho archivo se le va agregar las etiquetas de bloque de PHP.

<?php

?>

Luego se procede a crear una función llamada create_slug que se encargue de realizar esta tarea de manera que el código luego pueda ser reutilizado. Dicha función recibirá como parámetro el título del artículo o noticia.

<?php

function create_slug($string){
}

?>

Para poder agregar la funcionalidad requerida a la create_slug de una manera directa se hace uso de la función preg_replace la cual toma como primer parámetro la expresión regular que servirá para realizar la búsqueda de los caracteres que serán reemplazados por lo que se indique en el segundo parámetro, en este caso un guión (-).

La expresión regular indica que todos aquellos caracteres que sean no sean (^) caracteres alfabéticos en mayúscula (A-Z) o en minúscula (a-z) o caracteres numéricos (0-9) o guiones (-) se reemplazarán por guiones. El tercer parámetro es la cadena sobre la cual se realizará la búsqueda.

<?php

function create_slug($string){
    $slug = preg_replace('/[^A-Za-z0-9-]+/','-',$string);
}

?>

Se hizo uso de una variable llamada $slug que va contener lo que devuelva la función preg_replace. Luego se transforma a minúsculas el resultado ya que las URL no diferencian mayúsculas de minúsculas.

<?php

function create_slug($string){
    $slug = preg_replace('/[^A-Za-z0-9-]+/','-',$string);
    $slug = strtolower($slug);
}

?>

Por último se retorna el valor resultante.

<?php

function create_slug($string){
    $slug = preg_replace('/[^A-Za-z0-9-]+/','-',$string);
    $slug = strtolower($slug);
    return $slug;
}

?>

Luego bastaría hacer uso de la función para comprobar que realmente está entregando los valores deseados.

<?php

function create_slug($string){
    $slug = preg_replace('/[^A-Za-z0-9-]+/','-',$string);
    $slug = strtolower($slug);
    return $slug;
}

echo create_slug('Plugin WordPress para optimizar velocidad de sitio web');

?>
Comparte este post.
Artículos Recomendados Para Tí:

2 Comments

  1. Hola,

    no crees que no es muy buena práctica utilizar el mismo nombre de variable $slug para 2 cosas diferentes? Será por nombres de variables… 🙂

    Gracias por el vídeo.

  2. El problemas viene cuando el string tiene tildes, ñ, etc. Esta expresión regular las suprime directamente. Lo suyo sería que traduciera a la misma letra sin la tilde y las ñ a n, por ejemplo. saludos.