在eval()中使用PHP标签

时间:2011-10-24 08:10:45

标签: php

我有一个textarea你可以编写PHP&amp; HTML(或技术上 还要别的吗)。您可以通过提交在浏览器中预览您的代码 表格和我想做的是eval()代码(从而显示) 它。现在,eval似乎不接受PHP-Tags(<?php ?>) 给定字符串。我读了许多帖子,建议调用eval,如

eval(' ?>'.$_POST['markup']); 

但是我已经工作了一次,但它不再起作用了。我得到了 存在PHP打开/关闭标记的行的语法错误。

是否还有一种方法可以eval()包含PHP开始和结束标记的字符串?

2 个答案:

答案 0 :(得分:6)

构造

eval('?>' . $code);

应该仍然有效。引用the documentation

  

要混合HTML输出和PHP代码,您可以使用结束PHP标记离开PHP模式。

请检查您获得的语法错误类型,并确保您提供给eval()的代码是正确的。

还要记住eval()邪恶,因为它允许脚本用户在服务器上执行任意代码,例如读取私有文件和更改/删除数据。这是一个严重的安全风险!

答案 1 :(得分:1)

适合我:

<?php

$_POST['markup'] = 'Lorem ipsum dolor sit amet' . PHP_EOL;

// First time
eval(' ?>'.$_POST['markup']);

// Second time
eval(' ?>'.$_POST['markup']);

...打印出来:

Lorem ipsum dolor sit amet
Lorem ipsum dolor sit amet