2010-06-18 56 views
2

我正在尝试file_get_contents并输出php代码作为字符串而没有正在呈现。我们的想法是抓住原始未呈现文件的内容,从而它们可以在一个textarea进行编辑...php:file_get_contents正在剥离php代码

// 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'); 
?> 

上面的代码被剥出的PHP包括foo.php其输出:

<h1>foo</h1> 

有谁知道我怎样才能得到foo.php内容作为原料未呈现字符串,其中输出将?:

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

任何帮助,不胜感激!

+1

你有没有看到生成的源以确保内容是真的走了吗? – Charles 2010-06-18 19:59:19

+0

你做了什么应该工作。我能想到的唯一情况是失败的是,如果你访问foo.php作为URL(http://domain/foo.php)... – 2010-06-18 20:01:32

+0

Doh!好的,它在源代码中显示,但不在DOM中? – shanebo 2010-06-18 20:02:57

回答

10

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

此外,如果你尝试echo代码,它会尝试解析它,所以传递它通过htmlspecialchars($source)它应该工作。

事情是这样的:

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

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

+1

完美工作。感谢这个梅赫姆! – shanebo 2010-06-18 20:35:45

+0

很高兴我可以帮助你,祝你的项目好运 – 2010-06-18 20:39:11

-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,PH的P7)

highlight_file - 文件的语法高亮

+0

2010年的答案是一个更完整,更好的答案。我不认为你的答案确实解决了OP正在寻找的确切问题。请参阅上面的Juan Cortes的回答。 – Benny 2017-10-17 18:42:04

+0

@benny我在想“我正在试图将file_get_contents和php代码作为字符串输出而不被呈现”恰恰是'highlight'指令的要点,并且对未来的用户来说将是一个有用的工具。 – 2017-10-17 19:17:04