From: dalef at yahoo-inc dot com Operating system: FreeBSD 4 PHP version: 5.2CVS-2008-09-10 (snap) PHP Bug Type: SimpleXML related Bug description: SimpleXML converts empty nodes into object with nested array
Description: ------------ When I run the following script I get strange results that are difficult to test against, and when converted to json, a real pain to use on the client-side. <?php $xml = new SimpleXMLElement('<foo><bar><![CDATA[]]></bar><baz/></foo>', LIBXML_NOCDATA); print_r($xml); $json = json_encode($xml); echo "{$json}\n"; ?> Since bar is empty (Even though it has a CDATA tag that is removed) before it gets to me ... I should get something like this bar => "" OR at most ... bar => SimpleXMLElemebt object () but ... what I don't expect is this: SimpleXMLElement Object ( [bar] => SimpleXMLElement Object ( [0] => ) ... When this data is converted to json ... I get bar:{"0":""} which requires me to do typeof and other types of tests on the client-side. I mentioned this issue to our resident FE PHP expert here at Y! and they said to file a bug. Reproduce code: --------------- Run this script on the command line: <?php $xml = new SimpleXMLElement('<foo><bar><![CDATA[]]></bar><baz/></foo>', LIBXML_NOCDATA); print_r($xml); $json = json_encode($xml); echo "{$json}\n"; ?> Expected result: ---------------- SimpleXMLElement Object ( [bar] => "" ) OR SimpleXMLElement Object ( [bar] => SimpleXMLElement Object ( ) ) Actual result: -------------- SimpleXMLElement Object ( [bar] => SimpleXMLElement Object ( [0] => "" ) ) -- Edit bug report at http://bugs.php.net/?id=46047&edit=1 -- Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=46047&r=trysnapshot52 Try a CVS snapshot (PHP 5.3): http://bugs.php.net/fix.php?id=46047&r=trysnapshot53 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=46047&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=46047&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=46047&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=46047&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=46047&r=needscript Try newer version: http://bugs.php.net/fix.php?id=46047&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=46047&r=support Expected behavior: http://bugs.php.net/fix.php?id=46047&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=46047&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=46047&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=46047&r=globals PHP 4 support discontinued: http://bugs.php.net/fix.php?id=46047&r=php4 Daylight Savings: http://bugs.php.net/fix.php?id=46047&r=dst IIS Stability: http://bugs.php.net/fix.php?id=46047&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=46047&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=46047&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=46047&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=46047&r=mysqlcfg