Foros del Web » Programando para Internet » PHP »

Problema con array y acentos.

Estas en el tema de Problema con array y acentos. en el foro de PHP en Foros del Web. Hola que tal. Resulta que declaro este array : @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original function caracteresTeleton ( $cadena ) {         ...
  #1 (permalink)  
Antiguo 11/11/2011, 13:05
Avatar de rafa_yael  
Fecha de Ingreso: mayo-2010
Ubicación: Zapotlanejo, Mexico
Mensajes: 54
Antigüedad: 13 años, 10 meses
Puntos: 4
Pregunta Problema con array y acentos.

Hola que tal.


Resulta que declaro este array :

Código PHP:
Ver original
  1. function caracteresTeleton ($cadena){
  2.    
  3.     #Sustituir ñ y n.  
  4.    
  5.     $acentos = array("á","Á","é","É","í","Í","ó","Ó","ú","Ú","ñ","Ñ",);
  6.     $sinacentos = array("a","A","e","E","i","I","o","O","u","U","n","N",);
  7.     $cadenaR = str_replace($acentos,$sinacentos,$cadena);
  8.    
  9.     for ($i=0; $i < count($sinacentos) ; $i++) {
  10.    
  11.             echo $sinacentos[$i];
  12.         echo $acentos[$i];
  13.        
  14.     }
  15.    
  16.     return $cadenaR;
  17.    
  18.    
  19. }


Lo que quiero hacer, es quitar todos los acentos de un string. Pero a la hora de cargar los array con los cuales voy a comparar los caracteres con acento cambian por otros signos. ¿Como puedo evitar esto?
  #2 (permalink)  
Antiguo 11/11/2011, 13:17
Avatar de tomark4  
Fecha de Ingreso: septiembre-2007
Mensajes: 154
Antigüedad: 16 años, 6 meses
Puntos: 29
Respuesta: Problema con array y acentos.

Prueba con esta

Código PHP:
Ver original
  1. <?php
  2. /**
  3. ** Reemplaza todos los acentos por sus equivalentes sin ellos
  4. **
  5. ** @param $string
  6. ** *string la cadena a sanear
  7. **
  8. ** @return $string
  9. ** *string saneada
  10. **/
  11. function reemplazar($string)
  12. {
  13. *
  14. * * $string = trim($string);
  15. *
  16. * * $string = str_replace(
  17. * * * * array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
  18. * * * * array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
  19. * * * * $string
  20. * * );
  21. *
  22. * * $string = str_replace(
  23. * * * * array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'),
  24. * * * * array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'),
  25. * * * * $string
  26. * * );
  27. *
  28. * * $string = str_replace(
  29. * * * * array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
  30. * * * * array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'),
  31. * * * * $string
  32. * * );
  33. *
  34. * * $string = str_replace(
  35. * * * * array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
  36. * * * * array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'),
  37. * * * * $string
  38. * * );
  39. *
  40. * * $string = str_replace(
  41. * * * * array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),
  42. * * * * array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),
  43. * * * * $string
  44. * * );
  45. *
  46. * * $string = str_replace(
  47. * * * * array('ñ', 'Ñ', 'ç', 'Ç'),
  48. * * * * array('n', 'N', 'c', 'C',),
  49. * * * * $string
  50. * * );
  51. *
  52. * * //Esta parte se encarga de eliminar cualquier caracter extraño
  53. * * $string = str_replace(
  54. * * * * array("\\", "¨", "º", "-", "~",
  55. * * * * * * *"#", "@", "|", "!", "\"",
  56. * * * * * * *"·", "$", "%", "&", "/",
  57. * * * * * * *"(", ")", "?", "'", "¡",
  58. * * * * * * *"¿", "[", "^", "`", "]",
  59. * * * * * * *"+", "}", "{", "¨", "´",
  60. * * * * * * *">", "<", ";", ",", ":",
  61. * * * * * * *".", " "),
  62. * * * * '',
  63. * * * * $string
  64. * * );
  65. *
  66. * * return $string;
  67. }
  68. echo reemplazar("hello ñs");
  69. ?>
__________________
"Todos somos ignorantes, pero no todos ignoramos las mismas cosas"

http://www.pctec21.blogspot.com
http://www.pctec21.com
  #3 (permalink)  
Antiguo 11/11/2011, 13:30
Avatar de rafa_yael  
Fecha de Ingreso: mayo-2010
Ubicación: Zapotlanejo, Mexico
Mensajes: 54
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Problema con array y acentos.

Cita:
Iniciado por tomark4 Ver Mensaje
Prueba con esta

Código PHP:
Ver original
  1. <?php
  2. /**
  3. ** Reemplaza todos los acentos por sus equivalentes sin ellos
  4. **
  5. ** @param $string
  6. ** *string la cadena a sanear
  7. **
  8. ** @return $string
  9. ** *string saneada
  10. **/
  11. function reemplazar($string)
  12. {
  13. *
  14. * * $string = trim($string);
  15. *
  16. * * $string = str_replace(
  17. * * * * array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
  18. * * * * array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
  19. * * * * $string
  20. * * );
  21. *
  22. * * $string = str_replace(
  23. * * * * array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'),
  24. * * * * array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'),
  25. * * * * $string
  26. * * );
  27. *
  28. * * $string = str_replace(
  29. * * * * array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
  30. * * * * array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'),
  31. * * * * $string
  32. * * );
  33. *
  34. * * $string = str_replace(
  35. * * * * array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
  36. * * * * array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'),
  37. * * * * $string
  38. * * );
  39. *
  40. * * $string = str_replace(
  41. * * * * array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),
  42. * * * * array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),
  43. * * * * $string
  44. * * );
  45. *
  46. * * $string = str_replace(
  47. * * * * array('ñ', 'Ñ', 'ç', 'Ç'),
  48. * * * * array('n', 'N', 'c', 'C',),
  49. * * * * $string
  50. * * );
  51. *
  52. * * //Esta parte se encarga de eliminar cualquier caracter extraño
  53. * * $string = str_replace(
  54. * * * * array("\\", "¨", "º", "-", "~",
  55. * * * * * * *"#", "@", "|", "!", "\"",
  56. * * * * * * *"·", "$", "%", "&", "/",
  57. * * * * * * *"(", ")", "?", "'", "¡",
  58. * * * * * * *"¿", "[", "^", "`", "]",
  59. * * * * * * *"+", "}", "{", "¨", "´",
  60. * * * * * * *">", "<", ";", ",", ":",
  61. * * * * * * *".", " "),
  62. * * * * '',
  63. * * * * $string
  64. * * );
  65. *
  66. * * return $string;
  67. }
  68. echo reemplazar("hello ñs");
  69. ?>

No logro que me funcione. Me ha regresado el mismo valor que introduje de esta manera:
Código PHP:
Ver original
  1. $Stock_descripcion  = caracteresTeleton($_POST['descripcion']);

Y la verdad ni idea
  #4 (permalink)  
Antiguo 11/11/2011, 13:40
Avatar de tomark4  
Fecha de Ingreso: septiembre-2007
Mensajes: 154
Antigüedad: 16 años, 6 meses
Puntos: 29
Respuesta: Problema con array y acentos.

oye la funcion se llama reemplazar y le pasas la cadena que quieres quitar los acentos, yo la probe en mi maquina y fuciona. :9
__________________
"Todos somos ignorantes, pero no todos ignoramos las mismas cosas"

http://www.pctec21.blogspot.com
http://www.pctec21.com
  #5 (permalink)  
Antiguo 11/11/2011, 13:43
Avatar de CesarHC  
Fecha de Ingreso: junio-2011
Ubicación: localhost
Mensajes: 566
Antigüedad: 12 años, 10 meses
Puntos: 56
Respuesta: Problema con array y acentos.

A mi me funciona asi:

Código PHP:
Ver original
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf8">
  2. <?php
  3. function caracteresTeleton ($cadena){
  4.    
  5.     #Sustituir ñ y n.  
  6.    
  7.     $acentos = array("á","Á","é","É","í","Í","ó","Ó","ú","Ú","ñ","Ñ",);
  8.     $sinacentos = array("a","A","e","E","i","I","o","O","u","U","n","N",);
  9.     $cadenaR = str_replace($acentos,$sinacentos,$cadena);
  10.    
  11.     for ($i=0; $i < count($sinacentos) ; $i++) {
  12.    
  13.             echo utf8_decode($sinacentos[$i]);
  14.         echo utf8_decode($acentos[$i]);
  15.        
  16.     }
  17.    
  18.     return $cadenaR;
  19.    
  20.    
  21. }
  22. $aaa=caracteresTeleton($cadena);
  23. ?>

Asi ya no aparecen caracteres raros, para quitar los acentos has caso a las respuestas anteriores.
__________________
Solo la práctica no te traicionara ¡¡¡¡¡¡

Seguir el camino tu debes PHP The Right Way.
  #6 (permalink)  
Antiguo 11/11/2011, 14:12
Avatar de rafa_yael  
Fecha de Ingreso: mayo-2010
Ubicación: Zapotlanejo, Mexico
Mensajes: 54
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Problema con array y acentos.

Cita:
Iniciado por tomark4 Ver Mensaje
oye la funcion se llama reemplazar y le pasas la cadena que quieres quitar los acentos, yo la probe en mi maquina y fuciona. :9
Cambie el nombre de la funcion pero deje el contenido que me pasaste. Y aun asi no me funciona. Pero no es el codigo. Mas bien es la manera en la que le estoy pasando los valores.

Al pasar el valor directamente del $_POST[' '] no me reconoce los datos como string, y no altera ningun caracter. Pero si meto el mismo texto pero directamente a la funcion si me altera los datos. Pero me devuelve unos caracteres raros.

Este compañero me resolvio eso:


Cita:
Iniciado por CesarHC Ver Mensaje
A mi me funciona asi:

Código PHP:
Ver original
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf8">
  2. <?php
  3. function caracteresTeleton ($cadena){
  4.    
  5.     #Sustituir ñ y n.  
  6.    
  7.     $acentos = array("á","Á","é","É","í","Í","ó","Ó","ú","Ú","ñ","Ñ",);
  8.     $sinacentos = array("a","A","e","E","i","I","o","O","u","U","n","N",);
  9.     $cadenaR = str_replace($acentos,$sinacentos,$cadena);
  10.    
  11.     for ($i=0; $i < count($sinacentos) ; $i++) {
  12.    
  13.             echo utf8_decode($sinacentos[$i]);
  14.         echo utf8_decode($acentos[$i]);
  15.        
  16.     }
  17.    
  18.     return $cadenaR;
  19.    
  20.    
  21. }
  22. $aaa=caracteresTeleton($cadena);
  23. ?>

Asi ya no aparecen caracteres raros, para quitar los acentos has caso a las respuestas anteriores.
Ahora solo tengo que encontrar la manera de convertir los datos recividos por el $_POST en string directamente, o encontrar la manera de que me funcione. ¿Alguna idea?
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 15:07.