• By Nacho
  • 10 de noviembre de 2023

Función para Generar URLs Amigables en PHP: La Clave para Mejorar tu Posicionamiento Web

Función para Generar URLs Amigables en PHP: La Clave para Mejorar tu Posicionamiento Web

Función para Generar URLs Amigables en PHP: La Clave para Mejorar tu Posicionamiento Web 1024 585 Nacho

Dificultad Alta

En este artículo, exploraremos una función esencial en PHP: la creación de URLs amigables. Si alguna vez te has preguntado cómo optimizar tus enlaces para mejorar tu posicionamiento en buscadores, estás en el lugar correcto.

La Función: Creando Magia con URLs Amigables en PHP

La función para crear URLs amigables en PHP que he desarrollado y he ido mejorando según han ido pasando casos es la siguiente:

function urlamigable($string) {
      $spacer = "-";
      $string = trim($string);
      $string = strtolower($string); 
      $string = str_replace(""", "", $string);
      $string = str_replace("'", "", $string);
      $string = str_replace(" ", " ", $string);
      $string = str_replace("²", "2", $string);
      $string = str_replace("á", "a", $string);
      $string = str_replace("à", "a", $string);
      $string = str_replace("ä", "a", $string);
      $string = str_replace("â", "a", $string);
      $string = str_replace("Â", "a", $string);
      $string = str_replace("é", "e", $string);
      $string = str_replace("è", "e", $string);
      $string = str_replace("ê", "e", $string);
      $string = str_replace("Ê", "e", $string);
      $string = str_replace("ë", "e", $string);
      $string = str_replace("euro;", "e", $string);
      $string = str_replace("€", "e", $string);
      $string = str_replace("%C2%A0", "", $string);
      $string = str_replace("nbsp;", "", $string);
      $string = str_replace("%", "", $string);
      $string = str_replace(";", "-", $string);
      $string = str_replace("í", "i", $string);
      $string = str_replace("î", "i", $string);
      $string = str_replace("Î", "i", $string);
      $string = str_replace("ì", "i", $string);
      $string = str_replace("ï", "i", $string);
      $string = str_replace("ó", "o", $string);
      $string = str_replace("ò", "o", $string);
      $string = str_replace("Ô", "o", $string);
      $string = str_replace("ô", "o", $string);
      $string = str_replace("ö", "o", $string);
      $string = str_replace("ú", "u", $string);
      $string = str_replace("ù", "u", $string);
      $string = str_replace("ü", "u", $string);
      $string = str_replace("û", "u", $string);
      $string = str_replace("Û", "u", $string);
      $string = str_replace("Ü", "u", $string);
      $string = str_replace("ñ", "n", $string);
      $string = str_replace("Ñ", "n", $string);
      $string = str_replace("+", "-", $string);
      $string = str_replace(" ", "-", $string);
      $string = str_replace("Á", "a", $string);
      $string = str_replace("À", "a", $string);
      $string = str_replace("Ä", "a", $string);
      $string = str_replace("É", "e", $string);
      $string = str_replace("Ë", "e", $string);
      $string = str_replace("É", "e", $string);
      $string = str_replace("È", "e", $string);
      $string = str_replace("Í", "i", $string);
      $string = str_replace("Ï", "i", $string);
      $string = str_replace("Ì", "i", $string);
      $string = str_replace("Ó", "o", $string);
      $string = str_replace("Ò", "o", $string);
      $string = str_replace("Ö", "o", $string);
      $string = str_replace("Ú", "u", $string);
      $string = str_replace("Ù", "u", $string);
      $string = str_replace("Û", "u", $string);
      $string = str_replace("Ü", "u", $string);
      $string = str_replace("Ñ", "ñ", $string);
      $string = str_replace("ß", "b", $string);
      $string = str_replace("&", $spacer, $string);
      $string = str_replace("@", "a", $string);
      $string = str_replace("´", $spacer, $string);
      $string = str_replace("`", $spacer, $string);
      $string = str_replace("^", $spacer, $string);
      $string = str_replace("*", $spacer, $string);
      $string = str_replace("=", $spacer, $string);
      $string = str_replace('"', $spacer, $string);
      $string = str_replace("'", $spacer, $string);
      $string = str_replace("/", $spacer, $string);
      $string = str_replace("$", $spacer, $string);
      $string = str_replace("·", $spacer, $string);
      $string = str_replace("#", $spacer, $string);
      $string = str_replace("%", $spacer, $string);
      $string = str_replace("(", $spacer, $string);
      $string = str_replace(")", $spacer, $string);
      $string = str_replace("?", $spacer, $string);
      $string = str_replace("¿", $spacer, $string);
      $string = str_replace("¡", $spacer, $string);
      $string = str_replace("!", $spacer, $string);
      $especialCaracter = utf8_decode("!");
      $string = str_replace($especialCaracter, $spacer, $string);
      $string = str_replace("{", $spacer, $string);
      $string = str_replace("}", $spacer, $string);
      $string = str_replace("+", $spacer, $string);
      $string = str_replace("*", $spacer, $string);
      $string = str_replace(",", $spacer, $string);
      $string = str_replace(".", $spacer, $string);
      $string = str_replace("apos;", "", $string);
      $string = str_replace("ç", "c", $string);
      $string = str_replace("¨", $spacer, $string);
      $string = str_replace("%C2%A0", " ", $string);
      $string = str_replace("%C2 %A0", " ", $string);
      $string = str_replace("%C2", " ", $string);
      $string = str_replace("%A0", " ", $string);
      $string = str_replace("%C2", $spacer, $string);
      $string = str_replace("%A0", $spacer, $string);
      $string = str_replace(" ", "", $string);
      $string = str_replace(" ", "", $string);
      $string = str_replace(":", "", $string);
      $string = str_replace(" -", $spacer, $string);
      $string = str_replace("- ", $spacer, $string);
      $string = str_replace("- -", "-", $string);
      $string = str_replace("[", "-", $string);
      $string = str_replace("]", "-", $string);
      $string = str_replace("+", "-", $string);
      $string = trim($string);
      $string = str_replace("%C2%A0", " ", $string);
      $string = str_replace("%C2 %A0", " ", $string);
      $string = str_replace("%C2", " ", $string);
      $string = str_replace("%A0", " ", $string);
      $string = str_replace("%C2", $spacer, $string);
      $string = str_replace(" ", $spacer, $string);
      $string = str_replace("------", "-", $string);
      $string = str_replace("-----", "-", $string);
      $string = str_replace("----", "-", $string);
      $string = str_replace("---", "-", $string);
      $string = str_replace("--", "-", $string);
      $string = str_replace("--", "-", $string);
      $string = str_replace("--", "-", $string);
      $string = str_replace("--", "-", $string);
      $string = str_replace("--", "-", $string);
      $string = str_replace(" -", $spacer, $string);
      $string = str_replace("- ", $spacer, $string);
      $string = str_replace("____", $spacer, $string);
      $string = str_replace("___", $spacer, $string);
      $string = str_replace("__", $spacer, $string);
      $string = str_replace("_", $spacer, $string);

      $ultimo = substr($string, -1);
      if($ultimo=='-'):
        $string = substr($string, 0,-1);
      endif;
      return $string;
  }

Desglosemos la función urlamigable(). Esta pieza de código es una herramienta poderosa para transformar cadenas de texto en URLs amigables para los motores de búsqueda. Elimina caracteres especiales, convierte a minúsculas y sustituye espacios con guiones, entre otras cosas.

Paso 1: Preparación de la Cadena

$string = trim($string);
$string = strtolower($string);
  • trim($string): Elimina los espacios en blanco al principio y al final de la cadena.
  • strtolower($string): Convierte toda la cadena a minúsculas.

Paso 2: Reemplazo de Caracteres Especiales y Acentos

$string = str_replace(""", "", $string);
// ... (otros reemplazos de caracteres especiales y acentos)
  • str_replace(""", "", $string): Elimina las comillas dobles.

Este bloque realiza múltiples reemplazos, eliminando caracteres especiales y acentos en la cadena. Por ejemplo, convierte «á» a «a» y «€» a «e».

Paso 3: Sustitución de Espacios y Caracteres Especiales

$string = str_replace(" ", "-", $string);
// ... (otros reemplazos de espacios y caracteres especiales)
  • str_replace(" ", "-", $string): Reemplaza espacios con guiones.

Este bloque sustituye espacios con guiones y también maneja diversos casos de caracteres especiales.

Paso 4: Eliminación de Caracteres Indeseados al Final

$ultimo = substr($string, -1);
if($ultimo=='-'):
    $string = substr($string, 0,-1);
endif;
  • substr($string, -1): Obtiene el último carácter de la cadena.
  • substr($string, 0,-1): Elimina el último carácter si es un guion.

Este bloque asegura que la cadena no termine con un guion, eliminándolo si es necesario.

Paso 5: Retorno de la Cadena Resultante

return $string;

Finalmente, la función devuelve la cadena resultante después de todos los procesos de manipulación.

Pero, ¿por qué es esto tan relevante?

Importancia de las URLs Amigables para SEO

Las URLs amigables no solo hacen que tus enlaces sean más legibles para los usuarios, sino que también tienen un impacto significativo en tu SEO. Los motores de búsqueda valoran las URL limpias y descriptivas, ya que facilitan la comprensión del contenido de la página. Esto se traduce en una mejor clasificación en los resultados de búsqueda.

Cómo se Utiliza la Función en la Práctica

Imagina que tienes un titular de artículo: «Descubre las Tendencias de Programación Web en 2024». Al aplicar la función urlamigable($titulo), obtendrías una URL como «descubre-las-tendencias-de-programacion-web-en-2024».

Ejemplo Práctico:

$titulo_articulo = "Descubre las Tendencias de Programación Web en 2024";
$url_amigable = urlamigable($titulo_articulo);
echo "URL Amigable: " . $url_amigable;

Resultado:

URL Amigable: descubre-las-tendencias-de-programacion-web-en-2024

Ahora debes hacer que esta URL amigable se asocie con tu artículo o sección y se almacene en una base de datos a la que poder acudir y mostrar el contenido relacionado. Será cuando alguien busca información sobre las tendencias de programación web, cuando tu artículo tenga más posibilidades de destacar gracias a una URL clara y relevante para Google.

2 comentarios
  • Dani Moreno 15 de junio de 2024 at 20:49

    Hola Nacho,

    ¿donde debo incluir todo este código para poder aplicarlo a mi web?

    • Nacho 18 de junio de 2024 at 13:27

      Hola Dani!
      El primer código que hay con toda la función al completo, deberías poder ubicarla donde más te convenga. Yo suelo ponerlo en la parte superior del código fuente, es decir, el código con la function urlamigable($string) arriba del todo, antes de la primera llamada a la función.

      Una vez ubicada la función en el código, solo debes hacer la llamada cuando la necesites utilizando el siguiente código: $url_amigable = urlamigable($titulo_articulo); donde $titulo_articulo contenga el string que te interese formatear.

      Ya te digo que es una función muy depurada en el tiempo y que en general a mí me ha funcionado bastante bien.
      Cuéntanos qué tal cuando la tengas integrada y funcionando!!
      Un saludo

Dejar una Respuesta