【问题标题】:php: file_get_contents is stripping out php codephp: file_get_contents 正在剥离 php 代码
【发布时间】:2010-06-18 19:58:03
【问题描述】:

我正在尝试 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');
?>

上面的代码去掉了 foo.php 中的 php 包含输出:

<h1>foo</h1>

有谁知道我如何将 foo.php 内容作为未渲染的原始字符串获取到输出位置?:

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

非常感谢任何帮助!

【问题讨论】:

  • 您是否查看了结果源以确保内容真的消失了?
  • 你所做的应该有效。我能想到的唯一会失败的情况是,如果您将 foo.php 作为 URL (domain/foo.php) 访问...
  • 噢!好的,它显示在源代码中但不在 DOM 中??
  • 维克多,是的,这是一个本地文件。
  • Charles,有没有办法让 php 代码字符串显示在 DOM 中?

标签: php


【解决方案1】:

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

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

类似这样的:

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

将回显 php 文件的格式化源代码,包括 cmets 和其中的任何其他文本不被解析。由于它看起来对您很重要,我还要说它当然显示在 DOM 中,因为它不再是代码,现在是文本。你可以把它放在一个容器里,给它设计样式,然后用它做任何你想做的事情。

【讨论】:

  • 完美运行。谢谢这个混乱!
【解决方案2】:

你也可以这样做:

<?php 

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

这将像 htmlspecialcharsfile_get_content 一样输出文件,但在 &lt;code&gt; 标签内并带有一些语法突出显示。

highlight_string

(PHP 4、PHP 5、PHP 7)

highlight_string — 字符串的语法高亮

highlight_file

(PHP 4、PHP 5、PHP 7)

highlight_file — 文件的语法高亮显示

【讨论】:

  • 2010 年的答案是一个更完整、更好的答案。我认为您的答案并不能真正解决 OP 正在寻找的确切问题。请参阅上面胡安科尔特斯的回答。
  • @benny 我在想“我正在尝试 file_get_contents 并将 php 代码作为字符串输出而不被渲染”正是highlight 指令的重点,并且将成为未来的有用工具用户。
猜你喜欢
  • 2016-10-06
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
相关资源
最近更新 更多