如何在PHP中回显一个.html文件的全部内容?

70

有没有办法在PHP中回显整个.html文件的内容?

例如,我有一个名为sample.html的文件,我想要回显该文件名,以便它的内容被显示出来。


4
应使用Includereadfile() - Vyktor
可能是一个重复的问题:包含整个文件内容并输出 - trejder
3个回答

119

你应该使用 readfile()

readfile("/path/to/file");

这将读取文件并在一条命令中将其发送到浏览器。本质上与以下内容相同:

echo file_get_contents("/path/to/file");

除此之外,file_get_contents() 可能会因为大文件而导致脚本崩溃,而 readfile() 则不会。


有没有办法先检查文件夹中是否存在该文件,只有在存在的情况下才执行上述命令? - Nikola Nastevski
file_exists() 可以检查是否存在该名称的文件或目录,并且 is_file() 用于检查文件是否存在 并且是一个普通文件。在您的情况下,应该使用 is_file() - Frxstrem
1
很奇怪,但当我将file_get_contents更改为readfile时,它会在底部添加1191,我不知道这个数字来自哪里 :) 有什么想法吗? - Nikola Nastevski
2
你使用过 echo readfile() 吗?因为 readfile() 返回文件的长度(看起来是 1191 字节),如果在 readfile() 前面添加 echo,它将在打印文件后打印长度。只需删除 echo 即可正常工作。 :) - Frxstrem
哈哈哈,多么简单而正确的解释,不过很有趣 :) 非常感谢你(也感谢其他人),你帮了我很多,再次感谢。 - Nikola Nastevski

19

只需使用:

<?php
    include("/path/to/file.html");
?>

这将同时输出它。这样做的好处是执行文件中的任何PHP代码。

如果您需要对内容进行操作,请使用file_get_contents()函数,

例如:

<?php
    $pagecontents = file_get_contents("/path/to/file.html");

    echo str_replace("Banana", "Pineapple", $pagecontents);

?>

这不会执行该文件中的代码,因此如果您希望它起作用,请小心。

我通常使用以下方式:

include($_SERVER['DOCUMENT_ROOT']."/path/to/file/as/in/url.html");

因此,我可以在不破坏包含文件的情况下移动文件。


谢谢您的快速回复 :) 您能给我写一个例子吗?我编辑了我的问题。谢谢。另外,您在"Just use:"后面没有代码吗? - Nikola Nastevski
1
啊,忘记正确缩进了! - Rich Bradshaw
readfile 可以正常工作,但是 include 对于图片似乎无法正常工作...... header('Content-Type: image/png'); include('test.png');exit; 显示的是一张 "损坏" 的图片。 - Pacerier
请注意,不要使用 include 来回显任意文件的内容。如果攻击者成功上传了一个 PHP 文件,并且您在其上调用了 include,那么您就会面临远程代码执行漏洞的风险。请改用 readfile() - cbr

14

如果你想确保HTML文件不包含任何PHP代码并且不会被当作PHP执行,不要使用include或者require。仅需这样操作:

echo file_get_contents("/path/to/file.html");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接