Can';是否使用PHP将输出渲染到屏幕?

Can';是否使用PHP将输出渲染到屏幕?,php,Php,我有下面的场景 我有一个PHP网站,其中包含大约3个动态内容的网页。我想将此内容呈现为静态内容,并呈现到另一个文件中。例如,contact.php->contact.html 我的代码如下所示 ob_start(); $content = require_once 'contact.php'; ob_end_flush(); file_put_contents("contact.html", $content); 不知何故,这是行不通的;-?(require_once()不返回脚本输出的内容。

我有下面的场景

我有一个PHP网站,其中包含大约3个动态内容的网页。我想将此内容呈现为静态内容,并呈现到另一个文件中。例如,contact.php->contact.html

我的代码如下所示

ob_start();
$content = require_once 'contact.php';
ob_end_flush();
file_put_contents("contact.html", $content);
不知何故,这是行不通的;-?(

require_once()不返回脚本输出的内容。您需要获取存储在输出缓冲区中的脚本输出:

ob_start();
require_once('contact.php');
$content = ob_get_clean();

file_put_contents('contact.html', $content);
ob\u get\u clean()

获取当前缓冲区内容,然后重试 删除当前输出缓冲区

ob_get_clean()基本上执行 ob_get_contents()和 ob_end_clean()


require\u一旦
打开文件并尝试将其作为PHP解析。它不会返回其输出。您可能正在查找以下内容:

<?php
ob_start();
require_once('file.php');
$content = ob_get_contents();
ob_end_flush();
// etc...
?>

通过这种方式,脚本将数据存储在$content中并将其转储到标准输出。如果只希望填充$content,请使用
ob\u end\u clean()
而不是
ob\u end\u flush()

签出ob\u get\u flush()

基本上试着去做

if(!is_file("contact.html")){
  ob_start();
  require_once 'contact.php';
  $content = ob_get_flush();
  file_put_contents("contact.html", $content);
}else{
  echo file_gut_contents("contact.html");
}

这将缓冲来自
contact.php
的输出,并在需要时将其转储。

为什么不让浏览器尝试加载
contact.php
if(!is_file("contact.html")){
  ob_start();
  require_once 'contact.php';
  $content = ob_get_flush();
  file_put_contents("contact.html", $content);
}else{
  echo file_gut_contents("contact.html");
}