我阅读了一些关于在页面中以纯文本形式显示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)输出Div,我想使用PHP&amp; file_get_contents
显示输入网址的内容。
问题是我想以明文和&amp ;;显示输出。输出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的内容为纯文本&amp;不是整个页面。
2)print_r(htmlentities($contents));
或echo htmlspecialchars($contents);
在PHP代码中插入此内容不会在第二个输出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的建议。输出看起来更干净
答案 0 :(得分:0)
只需将<
的所有实例转换为<
,即可阻止评估HTML标记。例如:
<?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>
或者,有<xmp>
标记,但它已过时。 <xmp>
上的Mozilla documentation建议在其位置使用<pre>
和<code>
。