字符串里面的PHP脚本?

时间:2014-10-09 18:46:49

标签: php

这可能吗?

我想要完成的任务:

  • 以字符串
  • 的形式创建html模板
  • 在字符串中添加脚本,例如include 'php/countries.php';
  • 将整个字符串回显到html页面

除了第二步之外的所有事情都有效。我想看到一个php文件回显问题,进入html页面,包括来自另一个php文件的回声。

示例

echo "<div id=\"first\"><?php include \'countries.php\'; ?></div>";

我已尝试过上述以及以下内容:

示例

echo "<div id=\"first\">".include 'countries.php'."</div>";

这需要评估吗?

感谢任何和所有帮助。

3 个答案:

答案 0 :(得分:2)

似乎有点傻,但你可以做到以下几点:

echo "<div id=\"first\">" . file_get_contents('countries.php') . "</div>";

或者...

echo "<div id=\"first\">";
include "countries.php";
echo "</div>";

或者...

$externalfile = compileexternal('countries.php');
function compileexternal($file) {
    ob_start();
    require $file;
    return ob_get_clean();
}

echo "<div id=\"first\">" . $externalfile . "</div>";

如果这些都不是您所需要的,请更新问题。有十几种方式。

答案 1 :(得分:0)

您可以使用

eval()

但这不是一个好习惯。

答案 2 :(得分:0)

您可以使用正则表达式。

例如,您的字符串可以是;

<div id="first">{{countries.php}}</div>

然后你呢;

$string = "<div id='first'>{{test2.php}}</div>";

echo preg_replace_callback("/(\{\{.+\}\})/", function($matches) {
   include_once( str_replace(array("{", "}"), "", $matches[0]));
}, $string);
  • 检查文件是否存在if( file_exists() )
  • 检查文件是否包含在内(我们不想包含../../../../../etc/passwd