ciao a tutti.
stò sbattendo la teasta da ormai due giorni su questo parser xml fatto in php.
_
funziona tutto bene ma, quando all'interno di un tag incontro una lettera accentata o una parentesi o un'apice ecc mi tronca il dato:
_
per esempio:
_
_
il prodotto non é disponibile:
output: il prodotto non
_
non riesco a trovare una soluzione.
vi posto lo script.
Codice PHP:
<?php class Content_Handler { function Content_Handler(){} function start_element($parser, $name, $attrs) { global $print_characters; if ($name == "PRODUCT"){ $zupid = ($attrs["ZUPID"]); echo "$zupid
"; } if ($name == "NAME" || $name == "DESCRIPTION" || $name == "DEEPLINK") { $print_characters = true; } } function end_element($parser, $name) { if ($name == "PRODUCT") { print "
"; } } function characters($parser, $chars) { global $print_characters; if ($print_characters) { echo "$chars
"; $print_characters = false; } } } $print_characters = false; $handler = new Content_Handler(); $book_parser = xml_parser_create("UTF-8"); xml_parser_set_option($book_parser, XML_OPTION_TARGET_ENCODING, "UTF-8"); xml_set_object($book_parser, $handler); xml_set_element_handler($book_parser, "start_element", "end_element"); xml_set_character_data_handler($book_parser, "characters"); $file = "mio.xml"; if ($file_stream = fopen($file, "r")) { while ($data = fread($file_stream, 4096)) { $this_chunk_parsed = xml_parse($book_parser, $data, feof($file_stream)); if (!$this_chunk_parsed) { $error_code = xml_get_error_code($book_parser); $error_text = xml_error_string($error_code); $error_line = xml_get_current_line_number($book_parser); $output_text = "Parsing problem at line $error_line: $error_text"; die($output_text); } } } else { die("Can't open XML file."); } xml_parser_free($book_parser);