使用file_get_content下载javascript输出

时间:2015-05-15 01:47:54

标签: javascript php jquery html file-get-contents

在使用PHP运行页面上的JavaScript代码后,是否可以下载生成的HTML代码。

例如,当页面包含此jQuery代码$("p").html("Hello world");并且我使用file_get_content('website.com')时,我没有得到字符串" Hello world"因为JavaScript在页面加载后运行。

3 个答案:

答案 0 :(得分:0)

使用cURL:

function get_data($url)
{
  $ch = curl_init();
  $timeout = 5;
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

然后做:

<?php echo get_data('http://theURLhere.com'); ?>

希望有所帮助

答案 1 :(得分:0)

答案 2 :(得分:0)

实现这一目标的一种方法是使用Selenium,并编写一个自定义脚本来收集它的输出......但我确信这远远超出了你试图做的范围。

我将采取的方式是颠倒责任。让JS将输出发送到PHP端点,并使用您认为合适的输出。

这是一个例子。

<强>的Javascript

<script>
var outputElement = 'html';
var HTML = $(outputElement).html();
var endpoint = 'myEndpoint.php';

$.post(endpoint, { html: HTML }, function(data) {
    alert('Output sent');
});

</script>

这里有一点需要注意:如果不能接受,您将无法获得DOCTYPE声明或HTML标记的任何属性,您可以在下面的PHP文件中重新构建它们。

<强> PHP

<?php

$html = $_POST['html']; // Be VERY CAREFUL with what you do with this...

// If you need to have the doctype and html tag... Use your own doctype.
// $html = sprintf('<DOCTYPE html><html class="my-class">%s</html>', $html);

// Do something with the HTML.

通过POST发送HTML时,您必须非常小心。如果您使用此HTML在您的网站上输出,很容易被欺骗,以泄露您网站上的敏感数据。

<强>参考