强制file_get_contents()不要将php代码呈现为纯文本

时间:2014-11-30 17:06:55

标签: php

如何从下面的示例中获得预期的输出?

注意:我正在使用$content = file_get_contents('content.php');在可能的地方和时间使用内容,因此它不是屏幕上的直接输出。 include()打破了网页。

content.php

<p>Hello <?php echo 'World!'; ?></p>

reader.php

<b>Message from another file:</b> <?php echo file_get_contents('content.php'); ?>

上面的代码输出是:

Message from another file: Hello <?php echo 'World!'; ?>

而不是(预期):

Message from another file: Hello World!

2 个答案:

答案 0 :(得分:2)

我认为您正在寻找<?php include('content.php');

  

file_get_contents - 将整个文件读入字符串

PHP.net file_get_contents - manual

  

include语句包含并评估指定的文件。

PHP.net include - manual

尝试将content.php转换为具有返回所需内容的函数的文件(您可能希望拥有参数)。只需要文件然后调用该函数并保存输出。

示例:

<强> content.php

function get_content($world){
  return '<p>Hello ' . $world . '</p>';
}

<强> reader.php

<?php 
require('content.php');
$content = get_content('world');
?>
<b>Message from another file:</b> <?php echo $content; ?>

答案 1 :(得分:1)

由于您无法使用include(虽然我不完全理解为什么),但希望将文件解析并作为PHP代码执行,您可以使用eval

<b>Message from another file:</b> <?php eval(file_get_contents('content.php')); ?>

但文件content.php不应包含<?php?>标记,如http://php.net/eval所述。