获取HTML内容并将其显示为纯文本

4

我获取了一个html文件的内容:

ob_start();
include ("myFile.html");
$html = ob_get_contents();

现在我想通过邮件将 $html 以纯文本的形式发送以显示代码。 我尝试使用 "<pre>".$html."</pre>""<code>".$html."</code>",但我没有得到纯文本代码。您能帮我吗?


1
为什么不使用 $html = file_get_contents() - user3783243
https://www.php.net/manual/en/function.htmlentities.php - j08691
1
这个回答解决了你的问题吗? 在PHP中将XML文件内容作为字符串获取 - gunwin
htmlspecialchars($html) 应该可以完成工作,甚至可以将其包装在 <pre>htmlspecialchars($html)</pre> 标签下。 - OMi Shah
另一个问题并不完全相同。 - TheKodeToad
显示剩余2条评论
3个回答

3

试着这样做:

<?php

$filePath = __DIR__ . '/myFile.html';

$content = file_get_contents($filePath);
// Escape.
$content = htmlspecialchars($content);
// Makes lines visible.
$content = preg_replace('/\n/', '<br>' . PHP_EOL, $content);

echo $content;

请注意,我使用单引号略微提高性能,但是当使用双引号时,模式将是"/\\n/"(为了转义反斜杠,但即使不转义也应该可以工作)。

1
我知道Top-Master已回答了这个问题,但这是一种替代方法,仍然使用include。我对PHP不够了解,所以不知道那些花哨的方法,可能更安全。

<pre>标签不能保证内容会完全按照原样显示。例如:<pre><a>Hello</a></pre>将显示为Hello,而不是<a>Hello</a>。要解决这个问题,可以使用&lt;(小于号)和&gt;(大于号)。如果需要实际的“&”符号,则可以使用&amp;。

这个修改后的版本应该转义<、>和&。就安全性而言,请不要依赖此方法。

ob_start();
include ("myFile.html");
$html = ob_get_contents();
$html = str_replace("&", "&amp;". $html);
$html = str_replace("<", "&lt;". $html);
$html = str_replace(">", "&gt;", $html);
$html = str_replace("\n", "<br/>");

1
要在浏览器中显示HTML代码,只需使用readfile()并设置Text/Plain的标头即可。
<?php
header('Content-Type: text/plain; charset=UTF-8');
readfile("myFile.html");

要通过电子邮件发送HTML代码,可以从浏览器中复制HTML代码,也可以使用file_get_contents()调用HTML代码。然后必须将电子邮件格式设置为纯文本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接