Mam problem i to chyba problem z wbudowanymi funkcjami XML w PHP ...
Jest sobie XML (kodowany w UTF-8):
Kod
<?xml version="1.0" encoding="UTF-8"?>
(...)
<contact:street>Marszałkowska 50 / 33</contact:street>
(...)
(...)
<contact:street>Marszałkowska 50 / 33</contact:street>
(...)
I funkcja prase'ująca:
Kod
function xml_tag_parser( $xml_text, &$xml_arr)
{
// Wlasciwa funkcja parsujaca xmla
// Wywolanie:
// $xml_text - kod xml do sparsowania,
// $xml_arr - wynikowa tablica xml
// Zwraca - wartosc tablicy $xml_arr
global $stack;
$no=0;
// przygotowanie tablicy $stack
$stack=array( 0=>array( "tag"=>"xml", "level"=>0, "child"=>array()));
$xml_parser = xml_parser_create("UTF-8");
xml_set_element_handler($xml_parser, "startTag", "endTag");
xml_set_character_data_handler($xml_parser, "cdata");
xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,FALSE);
if( !xml_parse($xml_parser,$xml_text))
{
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
};
xml_parser_free($xml_parser);
$xml_arr = $stack[0]["child"];
array_pop( $stack);
return $xml_arr;
};
{
// Wlasciwa funkcja parsujaca xmla
// Wywolanie:
// $xml_text - kod xml do sparsowania,
// $xml_arr - wynikowa tablica xml
// Zwraca - wartosc tablicy $xml_arr
global $stack;
$no=0;
// przygotowanie tablicy $stack
$stack=array( 0=>array( "tag"=>"xml", "level"=>0, "child"=>array()));
$xml_parser = xml_parser_create("UTF-8");
xml_set_element_handler($xml_parser, "startTag", "endTag");
xml_set_character_data_handler($xml_parser, "cdata");
xml_parser_set_option($xml_parser,XML_OPTION_CASE_FOLDING,FALSE);
if( !xml_parse($xml_parser,$xml_text))
{
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
};
xml_parser_free($xml_parser);
$xml_arr = $stack[0]["child"];
array_pop( $stack);
return $xml_arr;
};
Kod wrzucany do funkcji jak powyzej... a w zwracanej tablicy otrzymuje:
Kod
(...)
[value] => łkowska 50 / 33
(...)
[value] => łkowska 50 / 33
(...)
Co jest? Co moge zrobic zeby dzialalo to poprawnie??
Z gory dziekuje za pomoc,
Pozdrawiam,
FlashT