PHP kullanarak ekrana çıktı vermek değil mi?

3 Cevap

Ben şu senaryo var.

Ben bir PHP web sitesi cadı dinamik içeriği ile ilgili 3 web sayfalarını içerir var. Ben başka bir dosyaya statik içeriğe bu işlemek istiyorum. Örn. contact.php -> contact.html

Benim kod gibi görünüyor

ob_start();
$content = require_once 'contact.php';
ob_end_flush();
file_put_contents("contact.html", $content);

Her nasılsa bu çalışma değildir; -? (

3 Cevap

require_once (), bir komut dosyası tarafından çıkarılan içeriği geri gelmez. Sen çıktı tamponunda depolanan komut çıktısı almak gerekir:

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

file_put_contents('contact.html', $content);

ob_get_clean():

Gets the current buffer contents and delete current output buffer.

ob_get_clean() essentially executes both ob_get_contents() and ob_end_clean().

http://php.net/ob%5Fget%5Fclean

Ödeme ob_get_flush (http://www.php.net/manual/en/function.ob-get-flush.php)

Temelde yapmak için çalışacağız

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

Bu contact.php gelen çıkışını tampon ve gerektiğinde dökümü gerekir.

require_once dosyasını açar ve PHP olarak ayrıştırmak çalışır. Onun çıkışı dönmeyecektir. Ne muhtemelen aradığınız budur:

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

Bu şekilde, komut $ içerik hem de depolar veri ve standart çıktıya onları döker. Sadece doldurulması $ içerik istiyorsa, ob_end_clean() yerine ob_end_flush() kullanımı.