Все что вам нужно сделать:
1) в Вашем шаблоне-файле в место $title и $text ставите, например, {{title}}, {{text}}.
2) в месте, куда приходят данные формы, т.е. Ваши переменные, вы заменяете текст вот так
$filename = "$name.html"
$fileText = file_get_contents($filename);
$newFileText = str_replace("{{title}}", $title, $fileText);
$newFileText = str_replace("{{text}}", $text, $fileText);
file_put_contents(newFileText, $newFilename)
что-то вроде шаблонизатора. Теперь ваш файл содержит данные, введенные пользователем, все что осталось - отправить их
3) отправляете файл одним из указанных в статье способов
способы.
4) если хотите отдать только 1 раз, то вам нужен такой способ
$filename = "$name.html"
$fileText = file_get_contents($filename);
$newFileText = str_replace("{{title}}", $title, $fileText);
$newFileText = str_replace("{{text}}", $text, $fileText);
if (ob_get_level()) {
ob_end_clean();
}
// заставляем браузер показать окно сохранения файла
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
echo $newFileText;
exit;
Код написан с целью показать способ и не претендует на универсальность.