• User Newbie

    problmea parser php con sax e caratteri accentati

    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.

    [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<br>"; } if ($name == "NAME" || $name == "DESCRIPTION" || $name == "DEEPLINK") { $print_characters = true; } }
    function end_element($parser, $name) { if ($name == "PRODUCT") { print "<br />"; } }
    function characters($parser, $chars) { global $print_characters; if ($print_characters) { echo "$chars<br>"; $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);

    function _preParse(&$data) { $data = preg_replace("/&(.?);/", '{ent{$1}}', $data); } function _postParse(&$data) { $data = preg_replace("/{ent{(.?)}}/", '&$1;', $data); }

    ?>[/PHP]

    grazie a chiunque per lìaiuto


  • User Newbie

    nessuno sa aiutarmi?