Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/02/2014, 13:13
alphasierra
 
Fecha de Ingreso: octubre-2012
Ubicación: Talcahuano
Mensajes: 4
Antigüedad: 11 años, 5 meses
Puntos: 1
Pregunta Problema raro con acentos en servidor local

De antemano muchas gracias por la ayuda que me puedan brindar.

El problema que tengo tiene que ver exclusivamente con el servidor local, utilizo WAMP v2.0. No lo he querido actualizar a una versión más reciente porque me ha funcionado bien.

Lo que ocurre es exclusivamente en el servidor local porque en el servidor web funciona normalmente.

Al utilizar la siguiente función php es donde se presenta el problema:

Código PHP:
function amigables($url) {

   
// Tranformamos todo a minusculas
   
$url        =   strtolower($url);
                
   
// Cambiamos los caracteres especiales latinos
   
$acentos = array("á","é","í","ó","ú","Á","É","Í","Ó","Ú","ñ","Ñ");
   
$normal = array("a","e","i","o","u","a","e","i","o","u","n","n");
   
$url str_replace($acentos$normal$url);

   
// Ahora cambiamos algunos otros caracteres especiales y códigos por un guión
   
$find = array(' ''&''\r\n''\n''+');
   
$url str_replace ($find'-'$url);

   
// Se eliminan los siguientes caracteres que en una URL no nos interesan
   
$order = array('°','.',"'",'"',':','@','#','$','%','&','/','=','?','¡','¿','!','[',']','{','}',')','(',',');
   
$replace "";
   
$url str_replace($order$replace$url);
                
   return 
$url;

Si utilizo esta función en el servidor local la url amigable me queda algo como esto

http://127.0.0.1/aqu��-est��-el-ejemplo


Si todo hubiera salido bien tendría que verse como http://127.0.0.1/aqui-esta-el-ejemplo

Esto no ocurre si utilizo esta función en un servidor vía web.

Algunos detalles a tener en cuenta:
  1. La codificación de caracteres definida en el php.ini es UTF-8 ... default_charset = "UTF-8"
  2. En Apache también se definio UTF-8 como codificación por defecto... AddDefaultCharset UTF-8
  3. Los archivos php todos están guardados con codificación UTF-8 NO BOM
  4. Todas las cabeceras de las páginas están en UTF-8
  5. La base de datos y sus respectivas tablas están en utf8_spanish_ci
  6. Luego de la conexión a la base de datos se definió mysql_set_charset('utf8')
  7. Versión de Apache 2.2.8
  8. Versión de PHP 5.2.6

Luego de todo lo indicado... ¿Alguien tendrá una idea de lo que está ocurriendo?
¿Habrá algún problema con str_replace al trabajar en el servidor local?

Agradezco toda la ayuda que me puedan brindar.