Foros del Web » Programando para Internet » PHP »

str_replace ñ no funciona en utf-8?

Estas en el tema de str_replace ñ no funciona en utf-8? en el foro de PHP en Foros del Web. Estoy haciendo esto para la palabra "diseño": $categoria = str_replace("ñ","n", $data['info']['categoria']); echo $categoria; Pero me imprime "diseño". Es decir, no lo puedo sacar la ñ....
  #1 (permalink)  
Antiguo 26/10/2010, 11:35
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
str_replace ñ no funciona en utf-8?

Estoy haciendo esto para la palabra "diseño":

$categoria = str_replace("ñ","n", $data['info']['categoria']);
echo $categoria;

Pero me imprime "diseño". Es decir, no lo puedo sacar la ñ.
  #2 (permalink)  
Antiguo 26/10/2010, 11:37
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: str_replace ñ no funciona en utf-8?

¿Y si en vez de ponerle ñ le pones ñ?
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 26/10/2010, 11:41
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: str_replace ñ no funciona en utf-8?

utiliza strtr en vez de str_replace

http://php.net/manual/en/function.strtr.php
  #4 (permalink)  
Antiguo 26/10/2010, 11:47
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: str_replace ñ no funciona en utf-8?

Probe las dos cosas pero sigue igual:

Código PHP:
Ver original
  1. <?php $categoria = str_replace("&ntilde;", "n", $data['info']['categoria']); echo $categoria; ?>

Código PHP:
Ver original
  1. <?php $categoria = strtr($data['info']['categoria']), array("ñ" => "n"); echo $categoria; ?>

Tambien probe con y sin la funcion fixEncoding, que codifica en utf8 solo si es necesario.


Mas datos: en el array se lee "diseño". Mi pagina tiene charset utf-8 y la db tiene unicode_general_ci

Última edición por mayid; 26/10/2010 a las 11:54
  #5 (permalink)  
Antiguo 26/10/2010, 12:01
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: str_replace ñ no funciona en utf-8?

antes de pasarlo haz lo siguiente

Código PHP:
Ver original
  1. $str = utf8_decode($str);

claro $str es la que contiene el string con eñes

saludos
  #6 (permalink)  
Antiguo 26/10/2010, 12:02
Avatar de Ribon  
Fecha de Ingreso: septiembre-2010
Ubicación: El firmamento
Mensajes: 487
Antigüedad: 13 años, 7 meses
Puntos: 91
Respuesta: str_replace ñ no funciona en utf-8?

Yo por ejemplo uso esta funcion para eliminar cietos caracteres especiales
Código PHP:
Ver original
  1. function reemplazar_sp_chars($str){
  2.         $str = utf8_decode($str);
  3.         $str=ereg_replace ("/", "-", $str);
  4.         $str=ereg_replace (", ", "_", $str);
  5.         $str=ereg_replace ("_", "_", $str);
  6.         $str=ereg_replace ("_-_", "-", $str);
  7.         $str=strtr(strtolower("$str"),
  8.         "ÀÁÂÃÄÅàáâãäåÈÉÊËèéêëÌÍÎÏìíîïÒÓÔÕÖØòóôõöøÙÚÛÜùúûüÇçÑñÿ",
  9.         "AAAAAAaaaaaaEEEEeeeeIIIIiiiiOOOOOOooooooUUUUuuuuCcNny");
  10.         return $str;
  11.     }
  #7 (permalink)  
Antiguo 26/10/2010, 12:05
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: str_replace ñ no funciona en utf-8?

Funciones para limpiar las hay. Yo uso esta:
$nombre_limpio = preg_replace("/[^a-zA-Z0-9s]/", "_", $nombre);

En este caso no necesito limpiar para guardar en db, sino para mostrar en pantalla (el nombre de una imagen que se llama diseno.jpg)

Con lo que me pasaste me funciono perfectamente!
Código PHP:
Ver original
  1. <?php $categoria = str_replace("ñ",'n', utf8_decode($album['categoria'])); ?>

Mil gracias!

Etiquetas: utf
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 02:58.