• 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 2023». Al aplicar la función urlamigable($titulo), obtendrías una URL como «descubre-tendencias-programacion-web-2023». Simple, ¿verdad?

Ejemplo Práctico:

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

Resultado:

URL Amigable: descubre-tendencias-programacion-web-2023

Guardando en la Base de Datos

Ahora, imagina que esta URL amigable se asocia con tu artículo y se almacena en una base de datos. Cuando alguien busca información sobre las tendencias de programación web, tu artículo tiene más posibilidades de destacar gracias a una URL clara y relevante.

Dejar una Respuesta