ID:               36596
 Updated by:       [EMAIL PROTECTED]
 Reported By:      preben at infofab dot no
-Status:           Open
+Status:           Closed
 Bug Type:         Documentation problem
 Operating System: Linux FC4
 PHP Version:      Irrelevant
 New Comment:

This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.

Thank you for the report, and for helping us make our documentation
better.

"This function returns byte index according to UTF-8 encoded text
disregarding if input is in another encoding."


Previous Comments:
------------------------------------------------------------------------

[2006-03-03 12:37:34] preben at infofab dot no

Sorry, an error in statement - correct version

$ch = substr($data, $byte, 7);

The "bug" still stands though...

------------------------------------------------------------------------

[2006-03-03 12:37:32] preben at infofab dot no

Sorry, an error in statement - correct version

$ch = substr($data, $byte, 7);

The "bug" still stands though...

------------------------------------------------------------------------

[2006-03-03 00:12:33] preben at infofab dot no

Description:
------------
The function xml_get_current_byte_index() returns byte index according
to utf8 encoded text - disregarding if input is in ISO-8859-1. If you
would like to cach a chunk of data from a xml file you would need to
convert input to utf8 to get the correct calculations.

Reproduce code:
---------------
$data = "<?xml version='1.0'
encoding='iso8859-1'?>\n<data>\n<dummy>øææø</dummy>\n<row>ÆØÅdata</row>\n</data>\n";
function startElement($parser, $name, $attrs)
{
   global $data;
   if($name != "ROW") return;
   $byte = xml_get_current_byte_index($parser) + 41;
   $ch = substr($data, $byte + 41, 7);
   # The following calculates correct
   # $ch = utf8_decode(substr(utf8_encode($data), $byte, 7));
   echo "$name ($byte): $ch\n";
   exit();
}
function endElement($parser, $name)
{
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_parse($xml_parser, $data, 1);

Expected result:
----------------
ROW (79): ÆØÅd

Actual result:
--------------
ROW (79):


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=36596&edit=1

Reply via email to