Foros del Web » Programando para Internet » PHP »

Funcion URL Amigable - No funciona cargada en libreria externa (con Include)

Estas en el tema de Funcion URL Amigable - No funciona cargada en libreria externa (con Include) en el foro de PHP en Foros del Web. Hola people, Nada, seguro que es una chorrada, pero no encuentro la solución, tengo ésta función para hacer URLs amigables: Código PHP: function  url_amigables ( ...
  #1 (permalink)  
Antiguo 27/05/2010, 10:21
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 4 meses
Puntos: 1
Funcion URL Amigable - No funciona cargada en libreria externa (con Include)

Hola people,

Nada, seguro que es una chorrada, pero no encuentro la solución, tengo ésta función para hacer URLs amigables:

Código PHP:
function url_amigables($url){
  
$search = array('<''>''"''&');    
    
$url str_replace($search''$url);
    
$search = array('á','Á','é','É','í','Í','ó','Ó','ú','Ú','ñ','Ñ');
    
$replace = array('a','a','e','e','i','i','o','o','u','u','n','n');
    
$search = array('Á''É''Í''Ó''Ú''á''é''è''í''ó''ú''Ü''ü''Ñ''ñ''_''-''ç''à');
    
$replace = array('a''e''i''o''u''a''e''e''i''o''u''u''u''n''n'' '' ''c''a');
    
$url str_replace($search$replace$url);
    
$url preg_replace('/&(?!#[0-9]+;)/s'''$url);
    
$search = array(' a '' ante '' de '' para '' con '' contra '' por '' entre '' en '' sobre '' bajo '' y '' e '' o '' u '' este ',  'aquel '' la '' el '' lo '' las '' los ''els''d’','l’','s’');
    
$url str_replace($search' 'strtolower($url));
    
$url str_replace($search$replacestrtolower(trim($url)));
    
$url preg_replace("/[^a-zA-Z0-9\s]/"''$url);
    
$url preg_replace('/\s\s+/'' '$url);
    
$url str_replace(' ''-'$url); 
    return 
$url;

Y la cargo en una libreria externa con include(), donde tengo todos los códigos y funciones para el sitio web.

Lo curioso es que la función sí que funciona, pero no me devuelve bien los acentos:

Por ejemplo: De "Castilla y León" me devuelve "castilla-len".

En cambio si pongo la función entre <head> y </head> en la misma página PHP, sin ser cargada con un include, funciona perfectamente, es decir, me devuelve "castilla-leon".

Alguien sabe que tengo que hacer? o que demonios pasa?

Gracias de antemano y un saludo!
  #2 (permalink)  
Antiguo 27/05/2010, 10:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Funcion URL Amigable - No funciona cargada en libreria externa (con Includ

todo lo que te sucede es por la codificación de tus scripts, solo eso...

trata de cotejar dicha configuración en los mismos, y si es necesario usa funciones de conversión utf8 para que resulte tu función... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 27/05/2010, 10:52
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 4 meses
Puntos: 1
Respuesta: Funcion URL Amigable - No funciona cargada en libreria externa (con Includ

No se si lo hago bien, pero no hay manera:
Código PHP:
function url_amigables($url){
      
$search = array('&lt;''&gt;''&quot;''&amp;');    
    
$url str_replace($search''$url);
    
$search = array('&aacute;','&Aacute;','&eacute;','&Eacute;','&iacute;','&Iacute;','&oacute;','&Oacute;','&uacute;','&Uacute;','&ntilde;','&Ntilde;');
    
$replace = array('a','a','e','e','i','i','o','o','u','u','n','n');
    
$search = array('Á''É''Í''Ó''Ú''á''é''è''í''ó''ú''Ü''ü''Ñ''ñ''_''-''ç''à');
    
$replace = array('a''e''i''o''u''a''e''e''i''o''u''u''u''n''n'' '' ''c''a');
    
$url str_replace($search$replace$url);
    
$url preg_replace('/&(?!#[0-9]+;)/s'''$url);
    
$search = array(' a '' ante '' de '' para '' con '' contra '' por '' entre '' en '' sobre '' bajo '' y '' e '' o '' u '' este ',  'aquel '' la '' el '' lo '' las '' los ''els''d’','l’','s’');
    
$url str_replace($search' 'strtolower($url));
    
$url str_replace($search$replacestrtolower(trim($url)));
    
$url preg_replace("/[^a-zA-Z0-9\s]/"''$url);
    
$url preg_replace('/\s\s+/'' '$url);
    
$url str_replace(' ''-'$url); 
    return 
utf8_decode ($url);

También he probado con
return utf8_encode($url);
htmlentities($url, ENT_COMPAT, 'utf-8');

pero no me lo devuelve bien!
La verdad es que estoy bastante pez, alguien tiene alguna idea?

gracias!
  #4 (permalink)  
Antiguo 27/05/2010, 10:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Funcion URL Amigable - No funciona cargada en libreria externa (con Includ

solo te sugiero que las funciones de conversión UTF8 debes aplicarlas antes de hacer todo reemplazo... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 27/05/2010, 11:31
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 4 meses
Puntos: 1
Respuesta: Funcion URL Amigable - No funciona cargada en libreria externa (con Includ

jajaja! que idiota que soy! muchas gracias pateketrueke!

Tenía el archivo PHP que cargo con include como ANSII, lo he cambiado con el notepad a UTF-8 y listos...funciona!

Lo que ahora en el diseño de la página me aparece un espacio en blanco en la parte superior...vamos a investigar...

EDITO: Ya está solucionado! Con Notepad++ he transformado mi libreria PHP a "UTF8 sin Boom" y lo veo todo correcto! Cómo me imaginaba, era una chorrada!

Última edición por tonimito; 27/05/2010 a las 11:57

Etiquetas: externa, funcion, include, libreria, url, amigables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:45.