使用PHP file_get_contents作为div中的纯文本显示HTML内容

时间:2016-02-29 18:49:32

标签: php file-get-contents

我阅读了一些关于在页面中以纯文本形式显示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('<','&lt;',$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的建议。输出看起来更干净

1 个答案:

答案 0 :(得分:0)

只需将<的所有实例转换为&lt;,即可阻止评估HTML标记。例如:

<?php
$rawHTML = '<html><h1>This is a Title</h1></html>';
$encodedHTML = str_replace('<','&lt;',$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>