Foros del Web » Programando para Internet » PHP »

Error al intentar reemplazar caracter especial en PHP

Estas en el tema de Error al intentar reemplazar caracter especial en PHP en el foro de PHP en Foros del Web. Hola! Tengo un problema al leer las celdas de una planilla de Excel. No puedo cambiar los caracteres especiales, tengo lo siguiente: La celda del ...
  #1 (permalink)  
Antiguo 02/12/2012, 23:22
 
Fecha de Ingreso: diciembre-2012
Mensajes: 2
Antigüedad: 11 años, 11 meses
Puntos: 0
Error al intentar reemplazar caracter especial en PHP

Hola! Tengo un problema al leer las celdas de una planilla de Excel. No puedo cambiar los caracteres especiales, tengo lo siguiente:

La celda del excel tiene el valor Pablo Acuña
Quiero reemplazar la ñ por n, pero no se puede de ninguna forma.


$objHoja=$objPHPExcel->getActiveSheet()->toArray(null,true,true,true);

//El la columna A están los nombres
$nombreCliente =$objCelda['A'];
echo $nombreCliente; // Se imprime "Pablo Acuña"

$nombreCliente = ereg_replace("ñ","n",$nombreCliente);
echo $nombreCliente; // Se imprime también "Pablo Acuña" (no se cambia la "ñ")

$nombreCliente = ereg_replace("A","n",$nombreCliente);
echo $nombreCliente; // Se cambia la "A" quedando "Pablo ncuña"

¿Cómp puedo hacer para reemplazar la "ñ"?
Saludos y muchas gracias.

Alfredo
  #2 (permalink)  
Antiguo 03/12/2012, 00:00
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Error al intentar reemplazar caracter especial en PHP

No necesitas usar una expresión regular (aparte que ereg_replace está desaconsejado), con str_replace es suficiente. Si no te reemplaza allí tendrías que verificar la codificación de caracteres.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 03/12/2012, 00:04
 
Fecha de Ingreso: agosto-2012
Ubicación: Zafra
Mensajes: 25
Antigüedad: 12 años, 2 meses
Puntos: 2
Respuesta: Error al intentar reemplazar caracter especial en PHP

Yo lo he probado y me funciona, de todas formas prueba con esto por si acaso..
Código PHP:
Ver original
  1. <?php
  2. $nombreCliente = "Pablo Acuña";
  3.  
  4.  
  5. /* Función para el cambio */
  6. function cambio($cadena)
  7. {
  8. $convierte=array( 'ñ' => 'n');
  9. $res=strtr( $cadena , $convierte );
  10. return $res;
  11. }
  12.  
  13.  
  14. echo cambio($nombreCliente);
  15.  
  16.  
  17. ?>

Espero que te sirva..
  #4 (permalink)  
Antiguo 03/12/2012, 06:46
 
Fecha de Ingreso: diciembre-2012
Mensajes: 2
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Error al intentar reemplazar caracter especial en PHP

Muchas gracias por tomarse el tiempo de responder, se agradece mucho.
Probé con las soluciones propuestas pero no pasa nada, sigue sin reemplazar el caracter "ñ".

Parece que el problema es cuando se almacena en una variable el nombre procedente de una celda de la planilla de excel:
Si hago esto
$nombreCliente =$objCelda['A'];
nunca me reemplaza el caracter, pero si hago:

$nombreCliente ="Pablo Acuña";
dentro del código, sí me lo reemplaza.

Estoy trabajando con host local y wampServer, ¿Habrá que configurarle algo?.
Saludos y gracias.
Alfredo
  #5 (permalink)  
Antiguo 03/12/2012, 07:33
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Error al intentar reemplazar caracter especial en PHP

Trata lo que te indicaron de que posiblemente sea problema de codificación, es decir todo debe ser utf8 o ISO-8859-1 o ANSI o lo que quieras usar.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: eñe, ereg_replace, excelphp, phpexcel, reemplazar
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 21:22.