Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/07/2009, 12:28
Avatar de Ronruby
Ronruby
 
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 18 años, 3 meses
Puntos: 416
[APORTE] Función para crear URLs amigables

Comparto con ustedes esta función que cree hace un tiempo para hacer URL amigables:

Código PHP:
/** 
 Formato: 
  {id} se reemplaza por el ID pasado en el 2do argumento 
  {titulo} se reemplaza por el titulo creado por la funcion 
*/ 
function urlAmigable($titulo, $id, $formato = "", $suffix = "", $palabrasCensuradas = array()) { 
     
    
$wrong = array('á', 'é', 'í', 'ó', 'ú', 'ñ', 'Á', 'É', 'Í', 'Ó', 'Ú', 'Ñ', 'ç', 'ü'); 
    
$right = array('a', 'e' ,'i', 'o', 'u', 'n', 'A', 'E', 'I', 'O', 'U', 'N', 'c', 'u'); 
     
    
//Reemplaza los caracteres especiales 
    
$titulo = str_replace($wrong, $right, $titulo); 
    
//Pone la cadena en minisculas 
    
$titulo = strtolower($titulo); 
    
//Reemplaza todo lo que no sean letras ni numeros por "-" 
    
$titulo = preg_replace("/[^a-z0-9]+/", "-", $titulo); 
    
//Elimino los "-" al principio y final de la cadena 
    
$titulo = trim($titulo, '-'); 
    
//Separo la cadena en un array, usando "-" como delimitador 
    
$palabras = explode("-", $titulo); 
     
    
$censuradas = array("a", "en", "el", "un", "la", "una", "o", "se", "de", "del"); 
    
$censuradas = array_merge($censuradas, $palabrasCensuradas); 
     
    
//Usando array_diff, a mi array antes obtenido le resto el array de palabras comunes 
    
$palabras = array_diff($palabras, $censuradas); 
    
//Vuelvo a "pegar" la cadena 
    
$titulo = implode("-", $palabras); 
    
//Vuelvo id a su valor numerico 
    
$id = intval($id); 
     
    if ( ! empty(
$formato)) { 
        
$plantilla = array('{id}', '{titulo}'); 
        
$reemplazo = array($id, $titulo); 
        
$url = str_replace($plantilla, $reemplazo, $formato); 
        
$url .= $suffix; 
    } else 
$url = "$titulo-$id$suffix";  
    
//Retorno la URL amigable 
    
return $url; 

} 
Ejemplo de Uso:
Código PHP:
echo urlAmigable("[APORTE] Función para crear URLs amigables", 5, "{id}/{titulo}", ".html", array("para")); 
Resultado:
Cita:
5/aporte-funcion-crear-urls-amigables.html
Si tienen alguna pregunta, comentario, critica, sugerencia, no duden en ponerlas.

EDIT: Le corregi un error del que no me habia dado cuenta y aplique la sugerencia de pateketrueke.

Última edición por Ronruby; 09/07/2009 a las 16:25