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 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:
- La codificación de caracteres definida en el php.ini es UTF-8 ... default_charset = "UTF-8"
- En Apache también se definio UTF-8 como codificación por defecto... AddDefaultCharset UTF-8
- Los archivos php todos están guardados con codificación UTF-8 NO BOM
- Todas las cabeceras de las páginas están en UTF-8
- La base de datos y sus respectivas tablas están en utf8_spanish_ci
- Luego de la conexión a la base de datos se definió mysql_set_charset('utf8')
- Versión de Apache 2.2.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.