替代eval在php脚本中动态计算混合内容字符串(html + php)


Alternative to eval for dynamically evaluating mixed content strings (html + php) within php script

让我们进入正题。

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?

谢谢。

根据注释和回答部分中关于在这个特定类型的示例中使用include的建议,我修改了代码:

index . php

index . php

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

看起来效果不错。非常感谢大家。

我同意Jared的观点,include是可行的,但是如果你不想使用它或者它不适合你。那么你可以试试下面的选项,我认为这是更好的选择

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