Foros del Web » Programando para Internet » PHP »

acerca del encoding de xml_parser_create()

Estas en el tema de acerca del encoding de xml_parser_create() en el foro de PHP en Foros del Web. Buenas, tengo un problemilla con esta función, el caso es que si pongo: xml_parser_create("ISO-8859-1") Me hace aparentemente bien las cosas con los acentos. El problema ...
  #1 (permalink)  
Antiguo 09/09/2009, 03:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 41
Antigüedad: 14 años, 11 meses
Puntos: 1
acerca del encoding de xml_parser_create()

Buenas, tengo un problemilla con esta función, el caso es que si pongo:
xml_parser_create("ISO-8859-1")
Me hace aparentemente bien las cosas con los acentos.
El problema me viene con algunos caracteres algo mas especiales como "&".
He estado mirando y al parecer el ISO-8859-15 me viene perfecto para mi fín, pero esta funcion no la soporta, al menos en el php5 que tengo en el hosting
Hay algun otro charset que sea compatible con esos caracteres y ademas sea soportado por esta funcion?
o por el contrario existe otro parser integrado en php que pueda incluir este charset?
En principio está apañado cambiando el & por un Y, pero claro.. no es lo mismo, jeje
Un saludo!

Buscando por internet, encontré esto.
Código php:
Ver original
  1. <?php
  2. $rx = '/<?xml.*encoding=['"](.*?)['"].*? >/m';
  3. if (preg_match($rx, $source, $m))
  4. {
  5.  $encoding = strtoupper($m[1]);
  6. }
  7. else
  8. {
  9.  $encoding = "UTF-8";
  10. }
  11.  
  12. if($encoding == "UTF-8" ||
  13. $encoding == "US-ASCII" ||
  14. $encoding == "ISO-8859-1")
  15. {
  16.  $parser = xml_parser_create($encoding);
  17. }
  18. else
  19. {
  20. if(function_exists('mb_convert_encoding'))
  21. {
  22.     $encoded_source = @mb_convert_encoding($source, "UTF-8", $encoding);
  23. }
  24.  
  25. if($encoded_source != NULL)
  26. {
  27.     $source = str_replace (
  28. $m[0],
  29. '< ?xml version="1.0" encoding="utf-8"? >',
  30. $encoded_source);
  31.  
  32. }
  33.  
  34.  $parser = xml_parser_create("UTF-8");
  35. }
  36. xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8");
  37. ?>
He puesto un espacio entre los ?> por tema que se lia el highlight este
pero realmente no se como con esto consigue soportar el charset 15 como dice en la web ( vnffc.nhatviet.net/forums/showthread.php?t=510 )

Última edición por angel9484; 09/09/2009 a las 03:48
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 07:30.