Publi

Slugs amigables en PHP para usar en URLs

Cuando estamos desarrollando webs, normalmente tenemos que enlazar a contenidos creados por el usuario, y hoy en día está muy bien que la URL sea amigable tanto para el usuario, como para los buscadores y el navegador. Es decir, antes se veía mucho acceder a una página tipo: http://dominio.com/noticias.php?id=192391283 y ahora, eso mismo o vemos como http://dominio.com/noticias/2013/10/acabo-de-subir-un-slug-amigable . La URL es más larga, pero se indexa mejor, y al usuario le da una sensación algo más profesional.
Eso sí, aunque ya se permiten dominios con caracteres raros, y el tema de la codificación es casi del pasado, es recomendable no incluir caracteres raros como tildes, eñes, y letras extrañas que hay en algunos idiomas, porque al pasar el enlace de una persona a otra puede cambiar la codificación con la que la URL está escrita y cuando vamos a acceder, si ésta no coincide con la que tenemos en el servidor, la dirección no funcionaría. Pero como todas las codificaciones comunes coinciden en los primeros 127 valores, o lo que es lo mismo el código ASCII, utilizaremos caracteres contenidos ahí, pero además, evitaremos otros caracteres que nos pueden dar problemas, como ?, &, «, (espacio) y algunos más…

Al final nos quedamos con letras y números, y el guión, por lo que una «á» pasará a ser una «a», una «ñ», pasará a ser una «n», etc.

Podemos utilizar este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
function createSlug($str, $max=30)
{
        $out = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
        $out = substr(preg_replace("/[^-\/+|\w ]/", '', $out), 0, $max);
        $out = strtolower(trim($out, '-'));
        $out = preg_replace("/[\/_| -]+/", '-', $out);

        return $out;
}

function checkSlug($str)
{
        return preg_match ("/^[a-z0-9\-]*$/", $str);
}

$mySlug =  createSlug("Descripción de mi post en español normal, pero que se codificará de forma diferente para ser un texto amigable");
echo $mySlug."\n";
if (checkSlug($mySlug))
        echo "Buena";
?>

La función createSlug() probablemente la hayáis visto navegando por Internet, es muy corta y algo común, ésta admite dos argumentos, uno será la cadena a partir de la cual queremos crear el slug, y el otro será el tamaño máximo del slug que vamos a crear.

Adicionalmente, creé una función que verifica que la cadena que le pasamos es un struct, es decir, sólo contiene caracteres de la «a» a la «z», en minúscula, números y guión, desde el prncipio hasta el final… muy útil para verificar el dato entrante en la URL antes de empezar a buscarlo en nuestra base de datos.

También podría interesarte....

There are 3 comments left Ir a comentario

  1. Dragon City mod /
    Usando Google Chrome Google Chrome 119.0.0.0 en Windows Windows NT

    Dragon City MOD APk is an addictive mobile game that allows you to collect, breed, and train dragons, ultimately constructing your own dragon metropolis. However, the Mod APK version of the game elevates the experience by offering some exciting benefits and features that enhance your gameplay.

  2. Last Fortress Underground MOD /
    Usando Google Chrome Google Chrome 119.0.0.0 en Windows Windows NT

    Heroes in Last Fortress Underground MOD APK come with various abilities and attributes. We’ll explore the concept of hero synergy, which involves pairing heroes together for maximum effectiveness. By understanding how different heroes complement each other, you can gain a substantial advantage in battles and base defense.

  3. Ketill /
    Usando Google Chrome Google Chrome 122.0.0.0 en Windows Windows NT

    This design is steller! You certainly know how to keep a reader amused. Between your wit and your videos, I was almost moved to start my own blog (well, almost…HaHa!) Fantastic job.
    I really loved what you had to say, and more than that, how you presented it.

    Kecantikan

Leave a Reply