En principio podrías generar tu página HTML como lo haces ahora exactamente igual .. sólo que necesitarías capturar el buffer de salida que PHP genera (antes de enviarselo al cliente) y de ahí genear tu archivo físico con esa "variable".
Me refiero a algo tipo:
Código PHP:
<?
// inicias al captura del buffer .. primera línea de tu script .php que genera tu HTML ...
ob_start();
?>
// tu código HTML/PHP como corresponda .. compón la página HTML como corresponde: <html> .. etc ...
<?
// tomas tu buffer a una variable.
$html=ob_get_contents();
// Ahora faltaría ver que haces .. si presentas el HTML generado igualemente o simplemente un mensaje tipo "archivo generado" .. (descartando lo que se generó).
// Suponiendo que generas igualmente la página en "pantalla" ..
ob_end_flush();
// En $html tienes la página entera generada para que la vuelques en un archivo con fopen() .. fwrite() .. etc.
?>
Un saludo,