我试图将PHP文件抛出的渲染输出显示为文本。
文本还应包含 HTML 标记。
就像您在网页上执行"查看源代码"时得到的东西一样。
我怎样才能做到这一点?
由于您已经提到您希望输出类似于查看源代码,因此您只需在脚本开头将内容类型声明为纯文本即可。
这会将输出呈现为文本,并且文本文件是可下载的。
前任:
<?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);
尝试使用 PHP 的 show_source(); 函数。
给它一个指向您的文本文件的链接,例如
show_source("/link/to/my_file.html");
并小心它,因为它可能会暴露密码和其他敏感信息
为此,最简单的方法是捕获发送到输出的所有内容并对其进行缓冲。最后,您可以决定是否要像往常一样渲染它,或者是否要使用htmlspecialchars()
来显示源。
在代码的开头,放置以下语句:
$outputType = 'viewsource';
ob_start();
在代码末尾,添加以下内容:
$output = ob_get_contents();
ob_end_clean();
if($outputType == 'viewsource') {
echo htmlspecialchars($output);
} else {
echo $output;
}
方法可以做到这一点,最简单的一种是使用pre
标签,或者您可以将文件从.php
重命名为.phps
,或者使用highlight_file($file)
,这也在语法上突出显示您的代码。正如@hackitect提到的,还有file_get_contents()
甚至show_source()
。
但请记住,任何 html 代码都必须在 pre
标记中输出并转义。
我实际用来执行此操作的另一个技巧是制作一个包含查看源 URL 的超链接。
在Chrome,Firefox和Opera上完美运行,但在IE上则不然。
<a target="_blank" href="view-source:http://stackoverflow.com/questions/27034642/output-rendered-html-as-plain-text">Get Plain Text</a>