阅读网页(包含动态内容)并保存

时间:2011-02-13 18:37:20

标签: php ajax dynamic file-get-contents

我正在使用file_get_contents(),而来源是一个网址。我也使用ajax将html插入页面。


加载时的页面:

<div>  
     <!-- Html goes here when the insert button is pressed -->

     <input type="button" onclick="insertHtml()" value="insert"/>
     <input type="button" onclick="saveThisPage()" value="save"/>
</div>


当使用ajax动态添加html:

<div>    
     <!-- Html goes here when the insert button is pressed -->
        <div>Some text here...</div>
        <div>Some text here...</div>
        <div>Some text here...</div>

     <input type="button" onclick="insertHtml()" value="insert"/>
     <input type="button" onclick="saveThisPage()" value="save"/>
</div>



现在我想保存file_get_contents()返回的内容并将数据存储到mysql数据库中。

按“保存”按钮,查询发送到php文件读取页面( url source)...除了保存的内容是加载时没有新数据的内容,即<div>Some text here...</div>

我该怎么办?我使用什么功能?

4 个答案:

答案 0 :(得分:2)

要理解你想要做什么仍然很难。但根据这个评论得出答案:

  

@coosal:我忘了在我的问题中添加“保存”按钮。但过程1.Page Loads,2.I按“插入并添加数据3.I按”保存“并保存页面。在ajax加载数据后调用php

你可以做到这一点。只需在HTML页面上实现一个保存按钮,该按钮会触发另一个对PHP脚本的AJAX请求,然后保存已完成的页面:

<button onClick="$.post('save.php', {content:$('body').html()})">

然后通过以下方式接收完整的html主体:

file_put_contents("/tmp/saved.html", $_POST["content"]);  // or mysql_*

答案 1 :(得分:1)

使用file_get_contents()加载数据时,将不会执行请求页面中的任何Ajax代码。你需要一个浏览器来做到这一点。

答案 2 :(得分:1)

使用file_get_contents()来检索文件的整个内容以及要通过ajax调用的文件的内容是不实际的,甚至是不可能的,因为php在javascript被执行为javascript之前已经获取了数据完全是客户端脚本,我不认为这是可能的。

答案 3 :(得分:0)

如果您想要执行javascript,您应该通过浏览器组件提取数据。在Windows上,您可以使用IE的IWebBrowser2界面。 在其他平台上,您可以例如使用gecko