Как я могу повторить все содержимое файла .html в PHP?

Есть ли способ повторить все содержимое файла .html в PHP?

Например, у меня есть файл sample.html, и я хочу отобразить это имя файла, чтобы его содержимое отображалось.


person Nikola Nastevski    schedule 02.03.2012    source источник
comment
Include следует делать .) или readfile().   -  person Vyktor    schedule 03.03.2012


Ответы (3)


Вы должны использовать readfile():

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

Это прочитает файл и отправит его в браузер одной командой. Это по сути то же самое, что и:

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

за исключением того, что file_get_contents() может привести к сбою сценария для больших файлов, а readfile() — нет.

person Frxstrem    schedule 02.03.2012
comment
Есть ли способ, которым я могу сначала проверить, существует ли этот файл в папке, и только если он есть, выполнить указанную выше команду? - person Nikola Nastevski; 03.03.2012
comment
file_exists() может проверить, существует ли файл или каталог с таким именем, и is_file() можно использовать для проверки того, что файл существует и является обычным файлом. В вашем случае, вероятно, следует использовать is_file(). - person Frxstrem; 03.03.2012
comment
Странно, но когда я меняю file_get_contents на readfile, внизу добавляется 1191, и я понятия не имею, откуда взялось это число :) Есть идеи? - person Nikola Nastevski; 03.03.2012
comment
Вы используете echo readfile()? Поскольку readfile() возвращает длину файла (которая, по-видимому, составляет 1191 байт), если вы добавите echo перед readfile(), будет напечатана длина после печати файла. Просто удалите echo и все должно заработать. :) - person Frxstrem; 03.03.2012
comment
Ха-ха-ха, какое простое и правильное объяснение, забавная штука :) Большое вам спасибо (и другим ребятам тоже), вы мне очень помогли, еще раз спасибо. - person Nikola Nastevski; 03.03.2012

Просто используйте:

<?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");

так как тогда я могу перемещать файлы, не нарушая включения.

person Rich Bradshaw    schedule 02.03.2012
comment
Спасибо за быстрый ответ :) Не могли бы вы написать мне пример, пожалуйста? Я отредактировал свой вопрос. Спасибо. P.S. У вас нет кода после: Просто используйте: ? - person Nikola Nastevski; 03.03.2012
comment
Ах, забыл сделать отступ должным образом! - person Rich Bradshaw; 03.03.2012
comment
readfile работает, но include не работает с изображениями.....header('Content-Type: image/png'); include('test.png');exit; показывает неработающее изображение. - person Pacerier; 10.10.2014

Если вы хотите убедиться, что файл HTML не содержит кода PHP и не будет выполняться как PHP, не используйте include или require. Просто сделайте:

echo file_get_contents("/path/to/file.html");
person Not_a_Golfer    schedule 02.03.2012