![](/img/trans.png)
[英]PhpMailer Sent email content is show only plain text not contain with HTML styles
[英]Get HTML content and show this as plain text
我得到一个 html 文件的内容:
ob_start();
include ("myFile.html");
$html = ob_get_contents();
现在我想通过邮件将 $html 作为纯文本发送以显示代码。 我试过"<pre>".$html."</pre>"
和"<code>".$html."</code>"
但我没有得到纯代码。 你能帮助我吗?
尝试类似:
<?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/"
(用于转义反斜杠,但即使没有转义也应该可以工作)。
我知道 Top-Master 回答了这个问题,但这是另一种方法,仍然使用include
。 我对 PHP 的了解不够多,无法了解可能更安全的花哨方法。
<pre>
标签不保证内容会逐字显示。 例如<pre><a>Hello</a></pre>
将显示为Hello ,而不是 <a>Hello</a>。 为了解决这个问题,您可以使用 < (小于号)和 &rt; (大于符号)。 如果您需要和实际的 & 符号 ("&"),您可以使用 &。
这个修改后的版本应该转义 <、> 和 &。 在安全性方面不要依赖于此。
ob_start();
include ("myFile.html");
$html = ob_get_contents();
$html = str_replace("&", "&". $html);
$html = str_replace("<", "<". $html);
$html = str_replace(">", ">", $html);
$html = str_replace("\n", "<br/>");
要在浏览器中显示 HTML 代码,只需使用readfile()并将 header 设置为 Text/Plain。
<?php
header('Content-Type: text/plain; charset=UTF-8');
readfile("myFile.html");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.