替代eval,用于在php脚本中动态评估混合内容字符串(html + php)

时间:2013-05-03 03:49:06

标签: php html string dynamic eval

让我们直接进入它。

的index.php

<?php
    ...
    $url = "www.google.com";
    $val = "Is PHP better than Perl?";
    $file = file_get_contents("mixedcontent.txt");
    print eval("?>" . $file . "<?");
    ...
?>

mixedcontent.txt

<html>
...
    <form action="<?php echo $url; ?>">
        <input id="q" type="text" value="<?php echo $val; ?>"/>
    </form>
...
</html>

这两个文件就像存根一样,由于它所依赖的商业软件的限制,因此需要分开。

现在,我意识到eval被许多人视为最后的手段,并且大多数建议重新设计,因为eval可能存在安全风险。是否有使用eval动态评估混合内容(即html + php)的替代方法?我可以以某种方式利用create_function或call_user_func吗?

谢谢。

更新

根据评论和答案部分中的建议使用包含此特定类型的示例,我修改了代码:

的index.php

的index.php

<?php
    ...
    $url = "www.google.com";
    $val = "Is PHP better than Perl?";
    include("mixedcontent.txt");
    ...
?>

看起来效果很好。非常感谢大家。

1 个答案:

答案 0 :(得分:1)

我同意Jared,include是要走的路,但是如果你不想使用它,或者它不适合你。然后你可以尝试跟随,我认为这是更好的选择

http://www.php.net/manual/en/function.eval.php#108091