ID:               27101
 Comment by:       mr dot heat at gmx dot de
 Reported By:      daniel dot marschall at surfeu dot de
 Status:           Bogus
 Bug Type:         *Programming Data Structures
 Operating System: Linux
 PHP Version:      4.3.4
 New Comment:

Drop this annoying evalHtml crap. Use eval("?>" . $string);!


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

[2004-01-30 17:36:17] [EMAIL PROTECTED]

oops, tom is right

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

[2004-01-30 17:36:16] daniel dot marschall at surfeu dot de

Hello. I was wrong. My real problem is:



# taken from a user comment



function eval_buffer($string) {

   ob_start();

   eval("$string[2];");

   $return = ob_get_contents();

   ob_end_clean();

   return $return;

}



function eval_print_buffer($string) {

   ob_start();

   eval("print $string[2];");

   $return = ob_get_contents();

   ob_end_clean();

   return $return;

}



function eval_html($string) {

   $string = preg_replace_callback("/(<\?=)(.*?)\?>/si",

                                   "eval_print_buffer",$string);

   return preg_replace_callback("/(<\?php|<\?)(.*?)\?>/si",

                                 "eval_buffer",$string);

}



echo html_eval('<? if (1 == 1) { ?><? } ?>');



And this causes the error. But I don't know if it is the fault of the
user-comment-script or if the problem is in eval.

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

[2004-01-30 17:35:50] [EMAIL PROTECTED]

Not enough information was provided for us to be able
to handle this bug. Please re-read the instructions at
http://bugs.php.net/how-to-report.php

If you can provide more information, feel free to add it
to this bug and change the status back to "Open".

Thank you for your interest in PHP.


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

[2004-01-30 17:29:56] [EMAIL PROTECTED]

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

You can't have nested php-tags, try:



eval('if (1 == 1) { ?>works<? }');



in a sense your example does:

<?php <? if (1 == 1) { ?><? } ?> ?>



Which is wrong

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

[2004-01-30 17:13:13] daniel dot marschall at surfeu dot de

Description:
------------
<?php



echo eval('<? if (1 == 1) { ?><? } ?>');



?>



This let a parse error in the eval appear.



The Code <? if (1 == 1) { ?><? } ?> is ok and don't let the parse error
appear.





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


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

Reply via email to