【问题标题】:Save current page as HTML to server将当前页面另存为 HTML 到服务器
【发布时间】:2011-04-16 01:45:41
【问题描述】:

有人建议用什么方法将当前页面作为 HTML 文件保存到服务器?在这种情况下,还要注意安全性不是问题。

我花了无数时间到处寻找这个,但没有找到任何东西。

非常感谢您的帮助,谢谢!

编辑

感谢大家的帮助,非常感谢。

【问题讨论】:

  • 你在 14 小时前问了同样的问题:[保存自我的来源 (PHP)] - 你为什么不尝试在那里得到答案而不是再次发布它?(stackoverflow.com/questions/3769504/saving-source-of-self-php)
  • oezi - 好吧,看来我提出这个新问题是对的。我得到了一个正确的答案……新的问题,不同的人,不同的答案。您现在可以继续并关闭此问题。
  • 这些问题并不完全相同。它们非常相似,但目标不同:这里是服务器,另一个问题是浏览器本身。

标签: php html file save


【解决方案1】:

使用 JavaScript 将 document.getElementsByTagName('html')[0].innerHTML 作为隐藏输入值或通过 ajax 发送到服务器端。如果内容随后被 JavaScript 遍历/修改,这比输出缓冲更有用,服务器端可能对此没有任何概念。

【讨论】:

  • 谢谢,BalusC。因此,如果我使用 var $s = document.getElements... (在 php 中),我可以将整个 var 写入服务器上的文件?
  • JavaScript 在网络浏览器上运行,而不是在网络服务器上。你知道JS吗?无论如何,鉴于您的评论,我认为这个答案毕竟不是您所需要的 :) 您可能更愿意保存 PHP 生成的即时 HTML 页面,而不是当前打开的 HTML 页面(处于其当前所有客户端状态)。检查霍利维尔的答案。
【解决方案2】:

如果您的意思是将页面的输出保存在文件中,您可以使用缓冲来执行此操作。需要用到的函数是ob_startob_get_contents

<?php
// Start the buffering //
ob_start();
?>
Your page content bla bla bla bla ...

<?php
echo '1';

// Get the content that is in the buffer and put it in your file //
file_put_contents('yourpage.html', ob_get_contents());
?>

这会将页面内容保存在文件yourpage.html中。

【讨论】:

  • 非常感谢。你刚刚救了我的命。
  • 我也有同样的问题。感谢您的回答。 但是 这个yourpage.html 保存在哪里?我在我的目录文件夹中找不到该文件
  • @Walahh 除非chdir 已被调用,否则它应该位于所请求脚本的同一文件夹中。如果不确定是什么,可以拨打getcwd
  • 我期待一堆代码,但现在我感到很幸运,感谢迷你代码:)
【解决方案3】:

我想我们可以使用PHP的Output Control Functions,你可以先将内容保存到变量中,然后将它们保存到新文件中,下次你可以测试它是否存在html文件,然后再渲染- 生成页面。

<?php
$cacheFile = 'cache.html';

if ( (file_exists($cacheFile)) && ((fileatime($cacheFile) + 600) > time()) )
{
    $content = file_get_contents($cacheFile);
    echo $content;
} else
{
    ob_start();
    // write content
    echo '<h1>Hello world to cache</h1>';
    $content = ob_get_contents();
    ob_end_clean();
    file_put_contents($cacheFile,$content);
    echo $content;
}
?>

示例来自:http://www.php.net/manual/en/function.ob-start.php#88212

【讨论】:

    【解决方案4】:

    我觉得你需要 curl,这样你就可以保存任何页面的输出。将 curl 与 returntransfer 一起使用。并对输出做任何你想做的事情。

    【讨论】:

      【解决方案5】:

      如果您希望将完整的 html 页面与 css、图像和脚本一起保存在一个 html 文件中,您可以使用我编写的这个类:

      这个类可以保存包含图像、CSS 和 JavaScript。

      它获取给定页面的 URL 并检索它以存储在给定的 文件。

      该类可以解析 HTML 并确定哪些图像、CSS 和 它需要的 JavaScript 文件,因此这些文件也被下载并 保存在 HTML 页面内保存到本地文件。

      它可以选择跳过 JavaScript 代码,只保留页面 内容,然后压缩生成的页面,去掉空格。

      http://www.phpclasses.org/package/8305-PHP-Save-HTML-pages-complete-with-images-CSS-and-JS.html

      【讨论】:

        【解决方案6】:
        //function to use curl to get the content of the page.
        //parameter used url and $data for the posting credentials to retrieve information.
        
        function httpPost($url, $data){
            $curl = curl_init($url);
            curl_setopt($curl, CURLOPT_POST, true);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        
            $response = curl_exec($curl);
            curl_close($curl);
            return $response;
        }
        
        //
        $filename="abc.html"; // whatever name you want.
        $myfile = fopen($filename, "w") or die("Unable to open file!");
        $txt =  httpPost(<url>, ""); //<url> replace by url you want.
        fwrite($myfile, $txt);
        fclose($myfile);
        

        【讨论】:

        • 这是一个很好的建议,但您似乎必须输入完整的 URL ($txt = httpPost(, "") ),而不是使用本地文件。也许向我们展示如何获取本地文件而不是远程 URL?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-17
        • 1970-01-01
        • 1970-01-01
        • 2019-08-04
        • 1970-01-01
        • 2014-02-08
        相关资源
        最近更新 更多