Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/06/2009, 08:44
Avatar de newboy_master
newboy_master
 
Fecha de Ingreso: enero-2008
Ubicación: Granada
Mensajes: 882
Antigüedad: 18 años, 9 meses
Puntos: 46
Problema función para URL amigable.

Buenas, tenga esta función para convertir cadenas a amigables:

Código PHP:
function amigable($str) {

    
$search = array('<', '>', '"', '&');    
    
$str = str_replace($search, '', $str);
    
    
$search = array('á','Á','é','É','í','Í','ó','Ó','ú','Ú','ñ','Ñ');
    
$replace = array('a','a','e','e','i','i','o','o','u','u','n','n');
    
    
$str = str_replace($search, $replace, $str);
    
    
$str = preg_replace('/&(?!#[0-9]+;)/s', '', $str);

    
$search = array(' a ', ' ante ', ' de ', ' para ', ' con ', ' contra ', ' por ', ' entre ', ' en ', ' sobre ', ' bajo ', ' y ', ' e ', ' o ', ' u ', ' este ',  'aquel ', ' la ', ' el ', ' lo ', ' las ', ' los ');

    
$str = str_replace($search, ' ', strtolower($str));

    
$search = array('Á', 'É', 'Í', 'Ó', 'Ú', 'á', 'é', 'í', 'ó', 'ú', 'Ü', 'ü', 'Ñ', 'ñ', '_', '-');

    
$replace = array('a', 'e', 'i', 'o', 'u', 'a', 'e', 'i', 'o', 'u', 'u', 'u', 'n', 'n', ' ', ' ');

    
$str = str_replace($search, $replace, strtolower(trim($str)));
    
    
$str = preg_replace("/[^a-zA-Z0-9\s]/", '', $str);
    
$str = preg_replace('/\s\s+/', ' ', $str);
    
$str = str_replace(' ', '-', $str);

    return 
$str;

} 
El problema está en los acentos, se borran en vez de sustituirse por cualquier vocal sin el acento.

¿Cuál puede ser el problema si la función parece sustituir bien?
__________________
@jslirola - Programador Web Freelance.