Skip to content

Instantly share code, notes, and snippets.

@superboum
Last active May 5, 2021 18:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save superboum/a14f04a3d738f4adb6179ebc50c88c68 to your computer and use it in GitHub Desktop.
Save superboum/a14f04a3d738f4adb6179ebc50c88c68 to your computer and use it in GitHub Desktop.
Générateur de site statique depuis PHP

Générateur de site statique depuis PHP

Comment faire :

  1. Mettez le fichier moulinette.php à la racine de votre projet web PHP à convertir (dans votre dossier WAMP)
  2. Renseignez toutes les pages à convertir dans la variable $mes_pages
  3. À chaque fois qu'il faut générer le site web, ouvrir dans votre navigateur le fichier moulinette.php (par exemple http://127.0.0.1/moulinette.php)
  4. Les pages HTML sont créées à côté des pages PHP

Fichiers à la fin

Notes :

  1. Vous devrez éditer vos liens dans vos menus et ailleurs pour remplacer les .php par des .html
  2. Quand vous enverrez votre site, il ne sera pas nécessaire d'envoyer les fichiers .PHP, seulement les .HTML. Mais pour peu que vous n'ayez pas de secrets dans les .php, ce n'est pas grave si vous les envoyez.

Credits :

<!doctype html>
<pre>
<?php
// Toutes les pages à convertir
$mes_pages = [
"index.php",
"realisations.php",
"projets/foraminiferes.php",
// tes autres pages à la suite
];
foreach ($mes_pages as $page) {
// là c'est une astuce pour forcer PHP à générer le HTML depuis le fichier PHP
ob_start();
require_once $page;
$contenu_html = ob_get_contents();
ob_end_clean();
// on stocke le HTML dans un fichier du même nom mais avec l'extension .html plutôt que .php
$nouveau_fichier = preg_replace('/.php$/i', '.html', $page); // le dollar dit qu'on remplace que le .php **à la fin**
file_put_contents($nouveau_fichier, $contenu_html); // on met le contenu HTML généré dans le nouveau fichier
// on affiche un petit compte rendu
echo "conversion $page -> $nouveau_fichier\n";
}
echo "terminé\n";
?>
</pre>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment