2 votes

Impossible de rendre la sortie à l'écran avec PHP ?

J'ai le scénario suivant.

J'ai un site web PHP qui contient environ 3 pages web avec du contenu dynamique. Je veux convertir ce contenu en contenu statique dans un autre fichier. Par exemple, contact.php -> contact.html

Mon code ressemble à ceci

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

D'une manière ou d'une autre, cela ne fonctionne pas ;- ?(

9voto

Tom Haigh Points 32314

Require_once() ne retourne pas le contenu produit par un script. Vous devez obtenir la sortie du script qui est stockée dans le tampon de sortie :

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

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

ob_get_clean() :

Récupère le contenu actuel du tampon et supprimer le tampon de sortie actuel.

ob_get_clean() exécute essentiellement ob_get_contents() et ob_end_clean(). ob_end_clean().

http://php.net/ob_get_clean

2voto

Zed Points 27408
ob_start();
require_once('contact.php');
$content = ob_get_contents();
ob_end_clean();
file_put_contents("contact.html", $content);

2voto

Piskvor Points 46986

require_once ouvre le fichier et essaie de l'analyser en tant que PHP. Il ne retournera pas sa sortie. Ce que vous recherchez est probablement ceci :

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

De cette façon, le script stocke les données dans $content ET les transmet à la sortie standard. Si vous voulez seulement que $content soit rempli, utilisez ob_end_clean() au lieu de ob_end_flush() .

2voto

Quamis Points 4301

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

En gros, essayez de faire

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

Cela devrait mettre en mémoire tampon la sortie de contact.php et le vider quand c'est nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X