30 nov. 2012

Crear URL amigables con PHP

Como crear URL amigables con PHP

Como ya he comentado en anteriores artículos, es muy importante para el posicionamiento de una página web que todas sus URL sean amigables. Hace un par de días escribí un post donde os explicaba cómo crear URL amigables con .htaccess, en este artículo explicaremos la manera de crear URL amigables con PHP.

1) Crear la función url_amigables()

La función url_amigable recibe como parámetro el título de un artículo y realiza las siguientes operaciones:
  • Transformar el título en minúsculas con strtolower()
  • Quita acentos, sustituimos la ñ con str_replace()
  • Reemplaza caracteres especiales por guiones y eliminamos caracteres raros con preg_replace()
El código resultante es el siguiente:
<?php
function urls_amigables($url) {
$url = strtolower($url);
$find = array('á', 'é', 'í', 'ó', 'ú', 'ñ');
$repl = array('a', 'e', 'i', 'o', 'u', 'n');
$url = str_replace ($find, $repl, $url);
$find = array(' ', '&', '\r\n', '\n', '+');
$url = str_replace ($find, '-', $url);
$find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
$repl = array('', '-', '');
$url = preg_replace ($find, $repl, $url);
return $url;
}
?>


2) Cambiar las URL con Mod Rewrite

Editamos nuestro fichero .htaccess y escribimos el siguiente código:
RewriteEngine on
Rewriterule ^articulo/(.+)/(.+) articulo.php?id =$1&title=$2


3) Cambiar los links dinámicamente

Esto lo conseguimos con el siguiente código:
// La variable del título de la noticia
$url = "Este es un título";
// mostramos el titulo editado
// echo urls_amigables($url);
// mostramos la url terminada
echo “http://tu.sitio.web/articulo/”.$id.”/”.urls_amigables($url).”/”;



Si te ha gustado el artículo sobre Crear URL amigables con PHP puedes colaborar visitando a alguno de nuestros patrocinadores, con esto me ayudarás a mantener el Blog y pueda escribir más artículos.

ARTÍCULOS QUE TE PUEDEN INTERESAR

Cómo guardar la configuración de una red wifi en Windows 7
Cómo abrir puertos windows 7
Atajos de teclado de Windows
Windows 7 no muestra la fecha