|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2003-12-04 20:13 UTC] iliaa@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 18:00:01 2025 UTC |
Description: ------------ When the function xml_parse_into_struct() is used, XML attribute values that contain escaped characters in them are not properly un-escaped. E.g. suppose the tag is: <governor name="Jesse "The Body" Ventura"/> Then the attribute is returned still escaped, as Jesse "The Body" Ventura rather than Jesse "The Body" Ventura like it should be. This function is supposed to parse the XML, and &-encodings are part of XML, so it should properly decode them! Here's ldd output for my test version of PHP: $ ldd ~/php-5.0.0b2/sapi/cli/php libcrypt.so.1 => /lib/libcrypt.so.1 (0x40017000) librt.so.1 => /lib/i686/librt.so.1 (0x40064000) libm.so.6 => /lib/i686/libm.so.6 (0x4007f000) libmysqlclient.so.10 => /usr/lib/mysql/libmysqlclient.so.10 (0x400cc000) libresolv.so.2 => /lib/libresolv.so.2 (0x40103000) libdl.so.2 => /lib/libdl.so.2 (0x40116000) libnsl.so.1 => /lib/libnsl.so.1 (0x4011a000) libz.so.1 => /usr/lib/libz.so.1 (0x40140000) libxml2.so.2 => /usr/local/lib/libxml2.so.2 (0x4014e000) libpthread.so.0 => /lib/i686/libpthread.so.0 (0x40237000) libc.so.6 => /lib/i686/libc.so.6 (0x40287000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) Reproduce code: --------------- <?php $sample = "<?xml version=\"1.0\"?><test attr=\"angle<bracket\"/>"; $parser = xml_parser_create(); $res = xml_parse_into_struct($parser,$sample,$vals,$index); xml_parser_free($parser); var_dump($vals); ?> Expected result: ---------------- array(1) { [0]=> array(4) { ["tag"]=> string(4) "TEST" ["type"]=> string(8) "complete" ["level"]=> int(1) ["attributes"]=> array(1) { ["ATTR"]=> string(16) "angle<bracket" } } } Actual result: -------------- array(1) { [0]=> array(4) { ["tag"]=> string(4) "TEST" ["type"]=> string(8) "complete" ["level"]=> int(1) ["attributes"]=> array(1) { ["ATTR"]=> string(16) "angle<bracket" } } }