Cómo generar urls amigables aptas para el SEO a partir de un string en PHP

Utilizar URLs amigables, sin duda alguna, ayuda a mejorar tu ranking en los distintos motores de búsqueda. El motivo es bien sencillo, la propia URL amigable proporciona la información suficiente sobre el contenido de la página web. Por si no te ha quedado demasiado claro, te mostramos la diferencia entre una URL normal y una URL amigable perfecta para el SEO:

  • URL normal: http://miweb.com/posts.php?id=58
  • URL amigable: http://miweb.com/tutorial-php-para-novatos

Como puedes ver en el ejemplo, en la URL amigable es mucho más fácil saber cuál será el contenido de la página web antes siquiera de hacer clic en ella, que en la URL normal. Si deseas aumentar el ranking de tu sitio web respecto a los motores de búsqueda, lo suyo es que cambies tus URLs por URLs amigables listas para el SEO.

En este tutorial, te mostraremos cómo generar URL amigables a partir de un string utilizando PHP. Mediante este script podrás convertir una cadena de texto normal y corriente a una cadena con el formato de URL amigable. Hemos agrupado todo el código PHP en una función llamada generateSeoURL(). Esta función crea automáticamente un slug limpio y apto para el SEO.

Función para crear una URL amigable

La función generateSeoURL() coge un string y crea una cadena URL legible por humanos con el carácter “-” como separador de palabras. Estos son sus parámetros:

  • $string: (obligatorio) El string que quieres convertir a una URL amigable
  • $wordLimit: (opcional) Limite de palabras presentes en la URL amigable. Por defecto es 0 (sin límite)
<?php
function generateSeoURL($string, $wordLimit = 0){
    $separator = '-';
    
    if($wordLimit != 0){
        $wordArr = explode(' ', $string);
        $string = implode(' ', array_slice($wordArr, 0, $wordLimit));
    }

    $quoteSeparator = preg_quote($separator, '#');

    $trans = array(
        '&.+?;'                    => '',
        '[^wd _-]'            => '',
        's+'                    => $separator,
        '('.$quoteSeparator.')+'=> $separator
    );

    $string = strip_tags($string);
    foreach ($trans as $key => $val){
        $string = preg_replace('#'.$key.'#i'.(UTF8_ENABLED ? 'u' : ''), $val, $string);
    }

    $string = strtolower($string);

    return trim(trim($string, $separator));
}

Uso

Pasa el artículo de la función o una cadena como primer parámetro de la función generateSeoURL(). Si quieres restringir el número de palabras en la URL, recuerda pasarle un número entero a la función como segundo parámetro. Si no quieres limitar el número de palabras, puedes omitir dicho parámetro.

Sin limite de palabras

<?php
$postTitle = 'Tutorial de PHP para usuarios novatos';

$seoFriendlyURL = generateSeoURL($postTitle);

//La salida será: tutorial-de-php-para-usuarios-novatos

Con límite de palabras

<?php
$postTitle = 'Tutorial de PHP para usuarios novatos';

$seoFriendlyURL = generateSeoURL($postTitle, 3);

//La salida será: tutorial-de-php

Fuente: codexworld.com

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP