gpt4 book ai didi

PHP:等效于使用 eval 包含

转载 作者:IT王子 更新时间:2023-10-29 00:02:04 26 4
gpt4 key购买 nike

如果代码相同,则两者之间似乎存在差异:

include 'external.php';

eval('?>' . file_get_contents('external.php') . '<?php');

有什么区别?有人知道吗?


我知道这两者是不同的,因为 include工作正常,eval给出错误。当我最初问这个问题时,我不确定它是在所有代码上还是只在我的代码上出错(并且因为代码是 eval 编辑的,所以很难找出错误的含义)。然而,在研究了答案之后,事实证明你是否得到错误并不取决于 external.php 中的代码。 , 但确实取决于您的 php 设置(准确地说是 short_open_tag)。

最佳答案

经过更多研究后,我发现自己出了什么问题。问题在于 <?php是一个“简短的开头标签”,因此只有在 short_open_tag 时才有效设置为 1(在 php.ini 或类似的东西中)。正确的完整标签是 <?php , 在第二个 p 之后有一个空格。

因此,include 的正确等价物是:

eval('?>' . file_get_contents('external.php') . '<?php ');

或者,您可以将开始标记全部省略(如下面的评论所述):

eval('?>' . file_get_contents('external.php'));

我最初的解决方案是添加一个分号,这也可以,但如果你问我,它看起来就不太干净了:

eval('?>' . file_get_contents('external.php') . '<?php;');

关于PHP:等效于使用 eval 包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1184628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com