|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2005-09-21 22:59 UTC] priit at ww dot ee
Description: ------------ XML parsing seems to skip certain info. specially data in fields before ???? (non-american-letters) etc. The same code has worked perfectly on any PHP 4.1+ (well until 4.3.6 or 7 I have tested it) versions. Reproduce code: --------------- <?xml version="1.0" encoding="ISO-8859-15"?> <rida> <tootaja_id>519</tootaja_id> <eesnimi>XxX</eesnimi> <perekonnanimi>YyY</perekonnanimi> <synniaeg>21.02.1900</synniaeg> <aadress>P?llu 1202-2, 10920 Tallinn</aadress> <haridustase>k?rgharidus</haridustase> <eriala>kaubandus?konoomika</eriala> <telefon>625 7700</telefon> <e_post>XxX.YyY@eee.ee</e_post> <ametijuhend_viit></ametijuhend_viit> <asutus>T??turuamet</asutus> <yksus_nimetus>Juhtkond</yksus_nimetus> <yksus_id>10</yksus_id> <prioriteet>1</prioriteet> <on_peatumine>0</on_peatumine> </rida> Expected result: ---------------- aadress => P?llu 1202-2, 10920 Tallinn haridustase => k?rgharidus eriala => kaubandus?konoomika asutus => T??turuamet (skipped the lines that were parsed fine!) PHP code I use is from php homepage sample or something... Actual result: -------------- aadress => ?llu 1202-2, 10920 Tallinn haridustase => ?rgharidus eriala => ?konoomika asutus => ??turuamet PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 07:00:01 2025 UTC |
using php code: $xml_parser = xml_parser_create('ISO-8859-1'); xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "characterData"); $data = fread($fp, filesize($file)); if(!xml_parse($xml_parser, $data, feof($fp))) { 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);<?php $file = 'failid/kontakt.xml'; function startElement($parser, $name, $attrs) { global $temp_name; $temp_name = $name; } function endElement($parser, $name) { global $temp_name,$temp_value,$moodul; if($temp_name==$name) {$moodul .= "($temp_name : $temp_value)\n";} } function characterData($parser, $data) { global $temp_value; $temp_value = $data; } $moodul = '<PRE>'; $xml_parser = xml_parser_create('ISO-8859-1'); xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "characterData"); if (!($fp = fopen($file, "r"))) { die("could not open XML input"); } $data = fread($fp, filesize($file)); if(!xml_parse($xml_parser, $data, feof($fp))) { 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); $moodul .= '</PRE>'; echo $moodul; ?>