【发布时间】:2016-06-12 22:41:21
【问题描述】:
我阅读了一些关于在页面中将 html 内容显示为纯文本的论坛帖子,但我的情况略有不同,因此提出了一个新问题。
我在一个页面中有两个 Div
1) 输入div,我会让用户在其中插入一个URL(比如ebay.com,如下图)
<div id="inputs">
<h3>Inputs</h3>
<form id="inputs" method="POST">
<label for="urltoget">URL to Get: </label>
<input type="text" name="urltoget" id="urltoget" size="50" value="www.ebay.com"><br><br>
<input type="submit" name="geturl" value="Step1">
</form>
2) Output Div,这里我想使用 PHP & file_get_contents 来显示输入 URL 的内容。
问题是我想在输出 div 中以纯文本而不是完整的 HTML 显示输出。
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$base_url = $_POST['urltoget'];
$contents = file_get_contents($base_url);
print_r($contents);
我在输出 div 中获取包含 HTML 内容的整个 ebay 页面。
到目前为止,我已经尝试过以下操作:
1) PHP 代码中的header('content-type: text/plain'); 按预期将整个页面呈现为纯文本。但是我只想要第二个输出 div 的内容作为纯文本而不是整个页面。
2) print_r(htmlentities($contents)); 或 echo htmlspecialchars($contents);在 PHP 代码中插入 this 不会在第二个输出 div 中显示任何内容。它也不会抛出任何错误。
3) var_dump($contents); 也不行,显示如下:
string
huge blanks space to scroll down & display
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">var ue_t0=ue_t0||+ne'... (length=187558)
我的问题:如何在第二个 div 中将 HTML 内容(包括 html 标签)作为纯文本获取? 请帮忙!!
================================================ =================
Terrymorse 的解决方案成功了
<?php
$rawHTML = '<html><h1>This is a Title</h1></html>';
$encodedHTML = str_replace('<','<',$rawHTML);
?>
<html>
<body>
<h3>
The Encoded HTML
</h3>
<div style="border: 1px solid gray; padding: 12px">
<pre><?php echo $encodedHTML; ?></pre>
</div>
</body>
</html>
感谢@markb 对 var_dump 的建议。输出看起来更干净
【问题讨论】:
-
然后
echo htmlspecialchars($contents)。您正在将另一个 html 页面的完整文本转储到当前页面的正文中,这意味着它将在当前页面的上下文中呈现为 html。如果您希望将 html 作为纯文本,则必须对 html 元字符进行编码,例如&lt;->&lt; -
感谢 Marc 的回复。甚至 echo htmlspecialchars($contents);在第二个 div 中不显示任何内容,就像 print_r(htmlentities($contents));也没有任何错误
-
然后执行
var_dump($contents)之类的操作,确保您确实收到了任何东西。 print_r 用于调试输出,但效果不佳。如果f_g_c()失败,则返回布尔值 false,它打印为长度为零的字符串。 var_dump 会告诉你类型/值,而不仅仅是字符串表示。请注意 print_r 和 var_dump 用于调试。如果您只想直接输出某些内容,请使用echo。 -
@MarcB,试过 var_dump。不成功。在我的问题中更新
-
我认为它至少会向您显示一个错误。错误输出是否打开?尝试将其放在 php 文件的顶部:
ini_set('display_errors', 1); error_reporting(E_ALL);然后再尝试htmlentities或htmlspecialchars
标签: php file-get-contents