字符串中的PHP脚本?
这可能吗 我正在努力实现的目标:字符串中的PHP脚本?,php,Php,这可能吗 我正在努力实现的目标: 以字符串的形式创建html模板 在字符串中,添加一个脚本,类似于include'php/countries.php' 将整个字符串回显到html页面 除第二步外,其他一切都有效。我希望看到一个php文件在html页面上回显被询问的问题,包括来自另一个php文件的回显 示例 echo "<div id=\"first\"><?php include \'countries.php\'; ?></div>"; echo "&
- 以字符串的形式创建html模板
- 在字符串中,添加一个脚本,类似于
include'php/countries.php'代码>
- 将整个字符串回显到html页面
echo "<div id=\"first\"><?php include \'countries.php\'; ?></div>";
echo "<div id=\"first\">".include 'countries.php'."</div>";
echo”“;
我已经尝试了上述方法,也尝试了以下方法:
示例
echo "<div id=\"first\"><?php include \'countries.php\'; ?></div>";
echo "<div id=\"first\">".include 'countries.php'."</div>";
echo'。包括'countries.php';
这需要评估吗
非常感谢您的帮助。似乎有点傻,但您可以做到以下几点:
echo "<div id=\"first\">" . file_get_contents('countries.php') . "</div>";
echo”“。文件获取内容('countries.php')。"";
或者
echo”“;
包括“countries.php”;
回声“;
或者
$externalfile=compileexternal('countries.php');
函数compileexternal($file){
ob_start();
需要$file;
返回ob_get_clean();
}
“回声”$外部文件。"";
如果这些都不是您需要的,请更新问题。有十几种方法。你可以使用
eval()
但这不是一个好的做法。您可以使用正则表达式 例如,您的字符串可以是
<div id="first">{{countries.php}}</div>
{{countries.php}
然后你会这样做
$string = "<div id='first'>{{test2.php}}</div>";
echo preg_replace_callback("/(\{\{.+\}\})/", function($matches) {
include_once( str_replace(array("{", "}"), "", $matches[0]));
}, $string);
$string=“{{test2.php}}”;
echo preg\u replace\u回调(“/(\{.+\})/”,函数($matches){
包括一次(str_替换(数组(“{”,“}”),“”,$matches[0]);
},$string);
- 检查文件是否存在
if(file_exists())
- 检查是否可以包括该文件(我们不希望包括
。/../../../../../etc/passwd
echo”“;include'countries.php';echo“”
@rosscowar我总是把需求和包含搞混。。thanks@Mike因此,这是完美的。但是,像这样分解回声有什么隐藏的问题吗?@Ricky不,没有。它只是从一个语句到三个单独的语句。考虑到countries.php是一个php文件,可能包含服务器sid,这可能不是我们想要的e代码。我确实喜欢这种方法,尽管@Mike是对的,countries.php确实包含了更多的代码。@Ricky在你的问题中看到了我的评论。谢谢你的第三个选项。我从未使用过这种方法。我将对此进行研究!ob_end_clean()吗;函数的作用域关闭后自动发生?不扩展此对话,但我确实在一个特定情况下使用eval。最好不要使用eval,但如果需要,请将其与用户输入分开。@Mike您可能将其与exec()或system()混淆了.eval解析字符串的方式与解析包含/必需字段的方式相同。这不是一种好的做法(与require/include不同),因为字符串变量可以保存任何内容(实际上是depends,但您知道)