php:file_get_contents正在剥离php代码

时间:2010-06-18 19:58:03

标签: php

我正在尝试使用file_get_contents并输出php代码作为字符串,而不显示。我们的想法是获取未经渲染的原始文件内容,以便在textarea中进行编辑...

// file "foo.php" I'm needing the contents of
<h1>foo</h1>
<? include 'path/to/another/file' ?>

// php file that's calling the file_get_contents
<?php
    echo file_get_contents('foo.php');
?>

上面的代码正在删除foo.php中的php include,它输出:

<h1>foo</h1>

有谁知道如何将foo.php内容作为原始未呈现字符串输出?:

<h1>foo</h1>
<? include 'path/to/another/file' ?>

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:10)

据我所知,除非它在同一台服务器上,否则无法获取php内容。 确保您尝试访问本地托管的文件而不是远程访问的文件,它应该可以正常工作。

此外,如果您尝试回显代码,它将尝试解析它,因此将其传递给htmlspecialchars($source),它应该可以正常工作。

这样的事情:

<?php
    echo "<pre>";
    echo htmlspecialchars(file_get_contents('file.php'));
    echo "</pre>";
?>

将回显php文件的格式化源代码,包括注释和其中任何其他文本而不进行解析。而且因为它看起来对你很重要,我当然也会说它显示在DOM 中,因为它不再是代码,现在它是文本。你可以把它放在一个容器里,给它做样,然后用它做任何你想做的事。

答案 1 :(得分:-1)

你也可以这样做:

<?php 

highlight_file('file.php');
// or alternatively
echo highlight_file('file.php',true);

这将输出与htmlspecialcharsfile_get_content类似但在<code>标记内并使用一些语法突出显示的文件。

  

highlight_string

     
    

(PHP 4,PHP 5,PHP 7)

         

highlight_string - 突出显示字符串的语法

  
     

highlight_file

     
    

(PHP 4,PHP 5,PHP 7)

         

highlight_file - 突出显示文件的语法