【问题标题】:Get HTML content and show this as plain text获取 HTML 内容并将其显示为纯文本
【发布时间】:2021-12-02 16:48:51
【问题描述】:

我得到一个 html 文件的内容:

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

现在我想通过邮件将 $html 作为纯文本发送以显示代码。 我试过"<pre>".$html."</pre>""<code>".$html."</code>"

但我没有得到明码。你能帮帮我吗?

【问题讨论】:

标签: php html


【解决方案1】:

尝试类似:

<?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/"(用于转义反斜杠,但即使没有转义也应该可以工作)。

【讨论】:

    【解决方案2】:

    我知道顶级大师回答了这个问题,但这是另一种方法,仍然使用include。我对 PHP 的了解还不够,无法了解那些可能更安全的花哨方法。

    &lt;pre&gt; 标签不保证内容会逐字显示。例如,&lt;pre&gt;&lt;a&gt;Hello&lt;/a&gt;&lt;/pre&gt; 将显示为 Hello,而不是 Hello。为了解决这个问题,您可以使用 < (小于号)和 &rt; (大于符号)。如果您需要和实际的和号(“&”),您可以使用 &.

    这个修改后的版本应该转义 和 &。在安全性方面不要依赖它。

    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/>");
    

    【讨论】:

      【解决方案3】:

      要在浏览器中显示 HTML 代码,只需使用 readfile() 并将标题设置为 Text/Plain。

      <?php
      header('Content-Type: text/plain; charset=UTF-8');
      readfile("myFile.html");
      

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

      【讨论】:

        猜你喜欢
        • 2015-07-06
        • 1970-01-01
        • 2013-05-19
        • 2016-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-25
        • 2011-10-31
        相关资源
        最近更新 更多