如何将Casino-review.php的PHP生成输出保存为HTML文件?
问题原因
你用file_get_contents、copy这类函数直接读取本地PHP文件时,只会拿到文件里的原始代码,不会触发PHP的解析执行,所以保存到HTML里的自然是未运行的PHP源码,不是最终的输出内容。
解决方法
方法1:用输出缓冲(OB)捕获本地执行的输出
这是最直接的方式,通过PHP的输出缓冲机制,执行目标PHP文件并捕获它的输出内容,再写入到HTML文件:
// 开启输出缓冲 ob_start(); // 执行目标PHP文件,此时文件的输出会被缓冲起来,不会直接输出到浏览器 include 'casinos/casino-review.php'; // 获取缓冲的输出内容,并关闭缓冲 $output = ob_get_clean(); // 生成目标文件路径 $fileName = $title . ".html"; $to = "casinos/all/" . $fileName; // 将捕获到的输出写入HTML文件 if (file_put_contents($to, $output)) { // 文件写入成功的处理逻辑,比如提示用户 // echo "文件生成成功"; } else { // 写入失败,检查目录权限 // echo "无法写入文件,请检查casinos/all/目录的写入权限"; }
方法2:通过HTTP请求获取执行后的输出
如果你的casino-review.php需要依赖URL参数、服务器重写规则等才能正常执行,可以直接请求它的完整URL来获取输出:
// 替换成你的网站域名和文件路径 $url = "http://你的域名/casinos/casino-review.php"; // 发起HTTP请求获取执行后的输出 $output = file_get_contents($url); $fileName = $title . ".html"; $to = "casinos/all/" . $fileName; file_put_contents($to, $output);
注意事项
- 确保
casinos/all/目录有写入权限,否则无法创建或写入文件。 - 如果用HTTP请求的方式,要确保服务器允许
file_get_contents访问外部URL(php.ini中的allow_url_fopen需开启),也可以改用CURL来发起请求。
内容的提问来源于stack exchange,提问作者Sonny's Kitchen
相关产品推荐
相关产品推荐

