PHP file_get_contents不会将收到的html页面内容分配给变量

时间:2016-01-14 03:03:55

标签: php

PHP页面确实接收被调用的html页面生成的输出。但是,由于它似乎异步处理它,因此该数据未分配给$content

$content=file_get_contents('http://www.example1.com/xxx.html');   
echo strlen($content) . $content . strlen($content);

这个编码最初反映了strlen($ content1)两次的结果:

1200
1200

几秒钟后,屏幕显示变化如下:

1200
abc def ghi jkl mno pqr stu vwx yz1 ... 123 456 789
1200

(html页面输出在已经显示的strlen值之间弹出)。

令人遗憾的是$content包含被调用页面的html编码,而不是html页面生成的预期abc def ghi jkl mno pqr stu vwx yz1 ... 123 456 789输出。

被调用的html页面www.example1.com/xxx.html的相关部分如下所示:

<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>      
<script src="http://dexels.github.io/navajofeeds-json-parser/js/dist/feed-0.0.1.js"></script>       
<script>"feed.init({clientId: "AaBBawwErT"});</script>

<div data-article="schedule" data-param-a="YES" data-fields="aa,bb,cc,dd,ee"></div>

我的html页面似乎完美无缺,因为我在屏幕上显示了正确的结果。但是如何在我的php页面中将此输出转换为$ content?

尝试添加sleep(10),但这会让事情变得更糟,因为睡眠似乎需要提前处理。

1 个答案:

答案 0 :(得分:1)

这里发生的是您从服务器请求的内容是html + javascript。但您想要的实际数据是由浏览器中的 生成的。。

要求做的是让PHP运行该JavaScript。没有很多不必要的工作,这样做真的不是一个好方法。

你想要做的事情就是做你自己做的事情。

如果您在加载评论中包含的网址时使用Safari或Chrome网络检查器,您会注意到调用data.sportslink.com并返回包含JavaScript所有数据的JSON对象渲染。

您必须生成该网址并检索其数据,然后json_decode()结果并执行您需要处理的任何必要处理。