【问题标题】:Output rendered HTML as plain text输出呈现为纯文本的 HTML
【发布时间】:2017-05-08 17:37:17
【问题描述】:

我试图将 PHP 文件抛出的渲染输出显示为文本。

文本也应该包含 HTML 标签。

类似于您在网页上执行“查看源代码”时所获得的效果。

我怎样才能做到这一点?

【问题讨论】:

标签: php html view-source


【解决方案1】:

由于您提到希望输出类似于查看源代码,您可以在脚本开头简单地将内容类型声明为纯文本。

这会将输出呈现为文本,并且文本文件是可下载的。

例如:

<?php
header("Content-Type: text/plain");
echo '<html><head><title>Hello</title></head><body><p>helloooooo</p></body></html>';
echo $_SERVER['REMOTE_ADDR'];
?>

希望这是有道理的,否则如果您想向用户显示它,另一种方法是通过 htmlspecialchars(); 传递输出。功能。

例如:

$content = '<html><head><title>Hello</title></head><body>p>helloooooo</p></body></html>';
echo htmlspecialchars($content);

【讨论】:

  • 第一个工作......有点。现在我只需要一种无需下载即可显示它的方法。第二个真的不行。它输出动态生成一些 HTML 代码的 PHP 代码。
  • 嗨,我想知道为什么会输出 php 代码,因为这不可能发生。你能把代码贴在这里吗?
  • 发生这种情况是因为在他的代码库中,他使用了echoprint 等语句。现在他可能已经将他的全部源代码放在引号中......
  • 其实文件是显示还是提示下载取决于浏览器。如果您在 Firefox 中尝试此操作,它可能会要求您将文件保存到 chrome 会打开并显示文本的位置。不过,我对此不是 100% 确定的。
  • 应该是text/plain,而不是plain/text
【解决方案2】:

尝试使用 php 的 show_source(); 函数。

给它一个指向您的文本文件的链接,例如

show_source("/link/to/my_file.html");

小心使用它,因为它可能会暴露密码和其他敏感信息

【讨论】:

  • 已经试过了。该文件包含呈现为 HTML 的 php 代码。 show_source 只是暴露了一些 php 代码。 ://
【解决方案3】:

为此,最简单的方法是捕获发送到输出的所有内容并将其缓冲。最后,您可以决定是否要像往常一样渲染它,或者是否要使用htmlspecialchars() 显示源代码。

在代码的开头,放置以下语句:

$outputType = 'viewsource';
ob_start();

在代码末尾添加以下内容:

$output = ob_get_contents();
ob_end_clean();
if($outputType == 'viewsource') {
    echo htmlspecialchars($output);
} else {
    echo $output;
}

【讨论】:

  • 这行得通...除了它弄乱了一些 Unicode 字符并在它们的位置输出奇怪的垃圾字符
  • 你能给我举个乱七八糟的字符的例子吗?
【解决方案4】:

有多种方法可以做到这一点,最简单的一种是使用pre 标签,或者您可以将您的文件从.php 重命名为.phps,或者使用highlight_file($file),它也可以语法高亮您的代码。还有@hackitect 提到的file_get_contents() 甚至show_source()

请记住,任何 html 代码都必须在 pre 标签内输出并转义。

【讨论】:

  • pre 标签实际上不起作用...参见上面的评论,将文件从 .php 重命名为 .phps 确实会输出 HTML,但会输出其中的 PHP 代码。我正在尝试获取 PHP 文件输出的 最终呈现的 HTML...类似于在网页上执行“查看源代码”时会得到的结果
【解决方案5】:

实际上使用的另一个技巧是使用其中的视图源 url 创建一个超链接。

在 Chrome、Firefox 和 Opera 上完美运行,但在 IE 上却不行。

&lt;a target="_blank" href="view-source:http://stackoverflow.com/questions/27034642/output-rendered-html-as-plain-text"&gt;Get Plain Text&lt;/a&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多