ID:               25686
 User updated by:  bart at mediawave dot nl
 Reported By:      bart at mediawave dot nl
-Status:           Bogus
+Status:           Open
 Bug Type:         Feature/Change Request
 Operating System: All
 PHP Version:      Irrelevant
 New Comment:

Excuse me if I was not clear enough. This "problem" occurs when parsing
the specified XML file with the Expat XML functions. I get this problem
with PHP 4.3.2, PHP 4.3.3 and PHP 5.0.0 beta.

You can reproduce the problem with the code on
http://www.php.net/manual/en/ref.xml.php under "Example 3. External
Entity Example" and using the following XML for xmltest.xml:

<?xml version="1.0" encoding="iso-8859-1"?>
<XMLTAG>
  <?php for ($i = 0; $i < 4; $i++) { ?>    
      <XMLTAG2>
      <? echo $i ?>
      </XMLTAG2>
  <?php } ?>
</XMLTAG>


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

[2003-09-29 05:42:00] [EMAIL PROTECTED]

With PHP 4.3.3 I get the correct output.
Disable short-tags maybe?


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

[2003-09-29 04:38:50] bart at mediawave dot nl

Description:
------------
With the XML parser module PHP currently handles processing instruction
code per tag. For example: <?php echo 'Hello World' ?> is seen as an
isolated chunk of code.

This doesn't work:

<XMLTAG>
  <?php for ($i = 0; $i < 4; $i++): ?>
    <XMLTAG2>
      <?php echo $i ?>
    </XMLTAG2>
  <?php endfor; ?>
</XMLTAG>

PHP handles the PHP code per <? somecode ?> tag. While in this example
the code actually spans through 5 tags. But PHP doesn't recognize it
this way.

Also. For my application it would be desirable if the PHP XML parser
would not return the php code. The evaluation of the PHP code in the
XML should be hanled by the parser. It should then only return the
resulting (evaluated) XML as if it was normal XML.

Reproduce code:
---------------
<?xml version="1.0" encoding="iso-8859-1"?>
<XMLTAG>
  <?php for ($i = 0; $i < 4; $i++): ?>
    <XMLTAG2>
      <?php echo $i ?>
    </XMLTAG2>
  <?php endfor; ?>
</XMLTAG>


Expected result:
----------------
<XMLTAG>
    <XMLTAG2>
      0
    </XMLTAG2>
    <XMLTAG2>
      1
    </XMLTAG2>
    <XMLTAG2>
      2
    </XMLTAG2>
    <XMLTAG2>
      3
    </XMLTAG2>
</XMLTAG>


Actual result:
--------------
Parse error: parse error, unexpected $end in
D:\php-4.3.2\PEAR\wrap_v4\dam.php(544) : eval()'d code on line 1

Parse error: parse error, unexpected T_ENDFOR in
D:\php-4.3.2\PEAR\wrap_v4\dam.php(544) : eval()'d code on line 1



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


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

Reply via email to