URLs Amigables con PHP: Ejemplo completo con un string
URLs Amigables con PHP. Hoy en día utilizar URLs amigables es casi ya una obligación, porque ayuda a mejorar tu ranking en los distintos motores de búsqueda en internet. Por otro lado, si no lo usamos corremos el riesgo de desaparecer de los resultados de búsqueda.
Su uso es muy sencillo, las URL amigable proporciona la información directa sobre el contenido de la página web. Para que se entienda mejor, te mostramos la diferencia entre una URL normal y una URL amigable para competir en los rankings de google:
- URL normal: http://website.com/articulo.php?id=342
- URL amigable: http://website.com/curso-avanzado-de-php-pdo
Si observas los dos vínculos podrás apreciar que la segunda URL es mucho más fácil saber cuál será el contenido de la página (URL amigable), que en la URL normal. Si deseas aumentar el ranking de tu sitio web respecto a los motores de búsqueda, lo que tenemos que hacer es migrar tus URLs a URLs amigables listas para el SEO.
URLs Amigables con PHP: Dos formas
En este artículo, abordaremos el tema de cómo generar URL amigables a partir de un string utilizando el lenguaje PHP. Haciendo uso de funciones para convertir una cadena de texto o cadena extraída de la base de datos a una cadena con el formato de URL amigable.
Hemos agrupado todo el código PHP en una función llamada generarSeoURL()
. Esta función crea automáticamente un slug limpio y muy recomendado para el SEO.
A) Primera Forma: Función generarSeoURL()
Esta función agarra un string y crea una cadena URL legible por humanos con el carácter guion “-” como separador de palabras. Estos son sus parámetros:
- $string: (obligatorio) El string que quieres convertir a una URL amigable y es obligatorio.
- $wordLimit: (opcional) Limite de palabras en la URL amigable. Por defecto es 0 (sin límite)
function generarSeoURL($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 de la función
Para su uso tenemos que pasar la cadena como primer parámetro en la función generarSeoURL()
. 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. Veamos un ejemplo.
Sin límite de palabras
$EntradaTitulo= 'Curso avanzado de PHP PDO'; $seoAmigableURL = generarSeoURL($EntradaTitulo); //La salida será: curso-avanzado-de-php-pdo
Con límite de palabras
$EntradaTitulo= 'Curso avanzado de PHP PDO'; $seoAmigableURL = generarSeoURL($EntradaTitulo, 4); //La salida será: curso-avanzado-de-php
B) Segunda Forma: Función format_uri
Esta función es más corta que el anterior pero más potente a la vez, puede convertir cualquier tipo de cadena, caracteres especiales a texto: la función se llama «format_uri
«.
<?php function format_uri( $string, $separator = '-' ) { $accents_regex = '~&([a-z]{1,2})(?:acute|cedil|circ|Grave|lig|orn|ring|slash|th|tilde|uml);~i'; $special_cases = array( '&' => 'and', "'" => ''); $string = mb_strtolower( trim( $string ), 'UTF-8' ); $string = str_replace( array_keys($special_cases), array_values( $special_cases), $string ); $string = preg_replace( $accents_regex, '$1', htmlentities( $string, ENT_QUOTES, 'UTF-8' ) ); $string = preg_replace("/[^a-z0-9]/u", "$separator", $string); $string = preg_replace("/[$separator]+/u", "$separator", $string); return $string; } ?>
¿Cómo usar la función?
Su uso es muy simple, solo debemos de insertar la variable con la cadena a convertir o cadena extraída a la base de datos.
$EntradaTitulo= 'Curso avanzado de PHP PDO'; $seoAmigableURL = format_uri($EntradaTitulo); //La salida será: curso-avanzado-de-php-pdo
Otro ejemplo
echo format_uri("#@&~^!âèêëçî"); //salida en el navegador: -and-aeeeci
CONCLUSIÓN DEL ARTICULO
En este articulo hemos aprendido a eliminar caracteres especiales de las cadenas, por ejemplo: las tildes, las eñes, caracteres alfanuméricos a textos y números. Además, los espacios en blanco en guiones.
Los usos de estas funciones son varias, por ejemplo: podemos limpiar el nombre de los archivos e imágenes que subimos al servidor. Sin embargo, lo más importante es convertir un título a URLs Amigables y lo podemos hacer de una manera muy sencilla.
Espero que esta explicación les ayude en sus proyectos web
Pero esa función donde la colocas para que tu url aparezca así? Solo explicas cómo hacerlo pero no detallas donde ponerlo o como mandas a llamar.ar a la variable
Hola Santiago,
Esta función solo es para limpiar cadenas de texto para ser usada posteriormente en la URL, obviamente se tiene que agregar la cadena limpiada en una columna en MySQL.
La función lo puedes usar por ejemplo en un archivo llamado
funciones.php
y posteriormente llamarlo con un include o require según tu necesidad.$EntradaTitulo= 'Curso avanzado de PHP PDO';
$seoAmigableURL = format_uri($EntradaTitulo);
//La salida será: curso-avanzado-de-php-pdo
Si deseas complementar la información puedes visitar este articulo donde detallo el tema.
https://www.baulphp.com/crear-url-unica-con-php-ejemplo-completo/
Espero haberte ayudado
Un saludo cordial
saludos en caso de que sea con variables q vienen por post como lo aplicaria ejemplo
http://www.tupagina.com/prueba.php?id=1234 en que momento realizo el llamado para que me modifique la url y como lo mostraria?
Hola Juan
Para que trabajen las URL amigables tendría que ser el método GET, recordemos que la información en método POST viaja oculta y GET visible.
Ahora, usando el método GET podemos proteger la información usando Filtros de saneamiento del PHP
saneamiento del PHP
Espero haberte ayudado, saludos
Muchas gracias